Boxplot com média e desvio padrão sobrepostos
3 participantes
Página 1 de 1
Boxplot com média e desvio padrão sobrepostos
Oi gente!
Não sei se interessa, mas acrescentei setas no boxplot para sobreposicionar o desvio padrão em cima do gráfico. Assim, conseguimos ver mediana, quartis, média e desvio apenas num gráfico! Espero que ajude.
Segue o código, baseado nos dados da Atividade Proposta do Módulo 2:
#boxplot da Riqueza em função da Área:
#y~x, sendo a leitura: y em resposta a x, ou y em função de x, ou em y variando com x; gravar como objecto permite depois acrescentar informação em cima (ex: setas do desvio padrão)
bxp <- boxplot(dados$Riqueza~dados$Area, xlab = "Riqueza (nº de espécies)", ylab = "Frequência", las=1)
box() #encaixilhar
#acrescentando um ponto representativo da média:
medias <- tapply(dados$Riqueza, dados$Area, mean) #vector com dados das médias
dps <- tapply(dados$Riqueza, dados$Area, sd) #vector com dados dos desvios padrão
points(medias, pch=16, col="red", cex=2) #acrescenta um ponto c/ média para cada espécie
#pch determina tipo de símbolo
#col determina cor
#cex determina tamanho relativo do símbolo
#acrescentando setas representando os desvios-padrão:
xi <- seq(bxp$n) #vector que define o inicio e fim do eixo x; necessário para usar a função arrows()
arrows(xi, medias-dps, xi, medias+dps, col="blue", angle=90, code=3) #acrescenta setas representando o desvio padrão
#xi é o vector que representa o eixo perpendicular à seta
#medias-dps e medias+dps define o comprimento da seta para cima e para baixo
#code determina o tipo de seta
#angle determina o ang
Resultado:
PS: seq() busquei do help do boxplot e não sei exactamente interpretar, pode ser que o Professor Marcos ajude . É uma maneira de dar a volta ao facto do eixo x não ter números, usando uma sequência. Se reparerem, ao criar o objecto bxp, aparece no RStudio: "list of 6" (no Global Environment), ou seja, lista de 6 valores. Abrindo esse objecto, aparece uma lista de características, entre elas, "n". O tipo dessa característica é "double [3]". Assim, a expressão "seq(bxp$n)" cria uma sequência a partir do número de "n" do objecto "bxp". Sendo "n" "double [3]", então a sequência fica: 1, 2, 3. Isso corresponde aos 3 boxplots. Fazendo a esta sequência corresponder um objecto, esse objecto vai definir o eixo x do boxplot.
Código de confirmação disso no R:
> seq(bxp$n)
[1] 1 2 3
Não sei se interessa, mas acrescentei setas no boxplot para sobreposicionar o desvio padrão em cima do gráfico. Assim, conseguimos ver mediana, quartis, média e desvio apenas num gráfico! Espero que ajude.
Segue o código, baseado nos dados da Atividade Proposta do Módulo 2:
#boxplot da Riqueza em função da Área:
#y~x, sendo a leitura: y em resposta a x, ou y em função de x, ou em y variando com x; gravar como objecto permite depois acrescentar informação em cima (ex: setas do desvio padrão)
bxp <- boxplot(dados$Riqueza~dados$Area, xlab = "Riqueza (nº de espécies)", ylab = "Frequência", las=1)
box() #encaixilhar
#acrescentando um ponto representativo da média:
medias <- tapply(dados$Riqueza, dados$Area, mean) #vector com dados das médias
dps <- tapply(dados$Riqueza, dados$Area, sd) #vector com dados dos desvios padrão
points(medias, pch=16, col="red", cex=2) #acrescenta um ponto c/ média para cada espécie
#pch determina tipo de símbolo
#col determina cor
#cex determina tamanho relativo do símbolo
#acrescentando setas representando os desvios-padrão:
xi <- seq(bxp$n) #vector que define o inicio e fim do eixo x; necessário para usar a função arrows()
arrows(xi, medias-dps, xi, medias+dps, col="blue", angle=90, code=3) #acrescenta setas representando o desvio padrão
#xi é o vector que representa o eixo perpendicular à seta
#medias-dps e medias+dps define o comprimento da seta para cima e para baixo
#code determina o tipo de seta
#angle determina o ang
Resultado:
PS: seq() busquei do help do boxplot e não sei exactamente interpretar, pode ser que o Professor Marcos ajude . É uma maneira de dar a volta ao facto do eixo x não ter números, usando uma sequência. Se reparerem, ao criar o objecto bxp, aparece no RStudio: "list of 6" (no Global Environment), ou seja, lista de 6 valores. Abrindo esse objecto, aparece uma lista de características, entre elas, "n". O tipo dessa característica é "double [3]". Assim, a expressão "seq(bxp$n)" cria uma sequência a partir do número de "n" do objecto "bxp". Sendo "n" "double [3]", então a sequência fica: 1, 2, 3. Isso corresponde aos 3 boxplots. Fazendo a esta sequência corresponder um objecto, esse objecto vai definir o eixo x do boxplot.
Código de confirmação disso no R:
> seq(bxp$n)
[1] 1 2 3
Re: Boxplot com média e desvio padrão sobrepostos
Oi, Joana!
Sua solução ficou excelente, parabéns!
Se quiser se aprofundar mais nessas possibilidades de se incrementar um boxplot, recomendo dar uma olhada na função jitter() e como ela pode ser usada para sobrepor o boxplot com os dados brutos. Fica bem legal, veja este exemplo:
https://www.r-graph-gallery.com/96-boxplot-with-jitter.html
Uma opção que vai ainda além são os "pirate plots", veja aqui:
https://bookdown.org/ndphillips/YaRrr/pirateplot.html
Sobre a função seq(), ela é usada para se criar vários tipos de sequências no R, como uma simples sequência de números.
Por exemplo: seq(0, 100, 5) cria uma sequência de 0 a 100, de 5 em 5.
No seu exemplo, ela é usada apenas para se definir quantos itens estarão presentes no eixo x do boxplot. Parece mais complicado do que é de verdade.
Sua solução ficou excelente, parabéns!
Se quiser se aprofundar mais nessas possibilidades de se incrementar um boxplot, recomendo dar uma olhada na função jitter() e como ela pode ser usada para sobrepor o boxplot com os dados brutos. Fica bem legal, veja este exemplo:
https://www.r-graph-gallery.com/96-boxplot-with-jitter.html
Uma opção que vai ainda além são os "pirate plots", veja aqui:
https://bookdown.org/ndphillips/YaRrr/pirateplot.html
Sobre a função seq(), ela é usada para se criar vários tipos de sequências no R, como uma simples sequência de números.
Por exemplo: seq(0, 100, 5) cria uma sequência de 0 a 100, de 5 em 5.
No seu exemplo, ela é usada apenas para se definir quantos itens estarão presentes no eixo x do boxplot. Parece mais complicado do que é de verdade.
Re: Boxplot com média e desvio padrão sobrepostos
Bem bacana!!! Obrigada!!
Valeria Andrade- Mensagens : 94
Data de inscrição : 12/03/2018
Tópicos semelhantes
» Função graf.media.desvio | Erro no desvio padrão
» Problemas com o gráfico da função média e desvio
» Boxplot no ggplot2
» Ajustando os Eixos do boxplot
» ESTATÍSTICA CIRCULAR PARA PADRÃO DE ATIVIDADE DE ANIMAIS
» Problemas com o gráfico da função média e desvio
» Boxplot no ggplot2
» Ajustando os Eixos do boxplot
» ESTATÍSTICA CIRCULAR PARA PADRÃO DE ATIVIDADE DE ANIMAIS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos