web-dev-qa-db-fra.com

ggplot2 largeur du boxplot

J'essayais de faire 2 tracés séparés que je veux présenter côte à côte dans mon affiche (j'ai besoin de les faire séparés et je ne peux pas utiliser facet_wrap). L'une des parcelles a plusieurs boîtes à moustaches, tandis que la deuxième parcelle n'en a qu'une. Comment puis-je manipuler la largeur des boîtes à moustaches de telle sorte que la deuxième boîte à moustaches soit de la même dimension que la largeur de n'importe laquelle des boîtes à moustaches individuelles du tracé 1, lorsque je mets les deux parcelles côte à côte? Un exemple reproductible:

tvalues <- sample(1:10000,1200)
sex <- c(rep('M',600),rep('F',600))
region <- c('R1','R2','R3','R4','R5')
df1 <- data.frame(tvalues,sex,region)

tvalues2 <- sample(1:10000,200)
sex2 <- sample(c('M','F'),200,replace=T)
region2 <- 'R6'
df2 <- data.frame(tvalues2,sex2,region2)

p1 <- ggplot(data=df1,aes(x=region,y=tvalues,color=sex)) + 
geom_boxplot(width=0.5)
p2 <- ggplot(data=df2,aes(x=region2,y=tvalues2,color=sex2)) + 
geom_boxplot(width=0.5)

Terrain 1 plot 1:

Plot2 plot 2:

8
bsmith

Je suggère de diviser la largeur des cases dans le deuxième graphique par le nombre de catégories de region dans le premier graphique.

p2 <- ggplot(data=df2,aes(x=region2,y=tvalues2,color=sex2)) + 
geom_boxplot(width=0.5/length(unique(df1$region)))

enter image description here

12
Marco Sandri