Boxplot em relação a dois fatores usando ggplot2 em R

13

Eu sou muito novo no R e em todos os pacotes no R. Olhei para a documentação do ggplot2, mas não consegui encontrar isso. Eu quero um gráfico de caixa de variável boxthisem relação a dois fatores f1e f2. Suponha que ambos f1e f2são variáveis ​​fatoriais e cada um deles use dois valores e boxthisé uma variável contínua. Eu quero ficar 4 boxplots em um gráfico, cada um correspondendo a uma combinação das possíveis combinações que f1e f2pode tomar. Eu acho que usando a funcionalidade básica em R, isso pode ser feito por

> boxplot(boxthis ~ f1 * f2 , data = datasetname) 

Agradecemos antecipadamente por qualquer ajuda.

Curious2learn
fonte
Forneça dados de amostra para, para obter respostas precisas.
mpiktas 31/05
2
Essa questão certamente seria mais adequada para o stackoverflow.com, pois há pouca estatística específica aqui.
Richiemorrisroe

Respostas:

23

Posso pensar em duas maneiras de conseguir isso:

1. Crie todas as combinações de f1e f2fora da ggplotfunção

library(ggplot2)

df <- data.frame(f1=factor(rbinom(100, 1, 0.45), label=c("m","w")), 
                 f2=factor(rbinom(100, 1, 0.45), label=c("young","old")),
                 boxthis=rnorm(100))

df$f1f2 <- interaction(df$f1, df$f2)

ggplot(aes(y = boxthis, x = f1f2), data = df) + geom_boxplot()

insira a descrição da imagem aqui

2. use cor / preenchimento / etc.

ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + geom_boxplot()

insira a descrição da imagem aqui

Bernd Weiss
fonte
4
(+1) eu gosto do uso de interaction(). De notar, podemos especificar geom_boxplot(position = position_dodge(width = .9))para adicionar espaço extra entre gráficos de caixa.
chl 31/05
1
Você também pode usar dodgeargumento na ggplotfunção -ggplot(aes(y = boxthis, x = f2, fill = f1, dodge=f1), data = df) + geom_boxplot()
Maciej
0

Aqui está outra maneira:

ggplot(datasetname) + boxplot(aes(x=as.factor(f1),y=boxthis)) + facet_wrap(~as.factor(f2), nrow=5)

Fornece algo como o seguinte:

Gráfico de caixa facetada

Richard
fonte