Rui - 9 months ago 41

R Question

I would like to built a boxplot in which the 4 factors (N1:N4) are overlaid in the same column. For example with the following data:

`df<-data.frame(N=N,Value=Value)`

Q<-c("C1","C1","C2","C3","C3","C1","C1","C2","C2","C3","C3","Q1","Q1","Q1","Q1","Q3","Q3","Q4","Q4","Q1","Q1","Q1","Q1","Q3","Q3","Q4","Q4")

N<-c("N2","N3","N3","N2","N3","N2","N3","N2","N3","N2","N3","N0","N1","N2","N3","N1","N3","N0","N1","N0","N1","N2","N3","N1","N3","N0","N1")

Value<-c(4.7,8.61,8.34,5.89,8.36,1.76,2.4,5.01,2.12,1.88,3.01,2.4,7.28,4.34,5.39,11.61,10.14,3.02,9.45,8.8,7.4,6.93,8.44,7.37,7.81,6.74,8.5)

with the following (usual) code, the output is 4 box-plots displayed in 4 columns for the 4 variables

`ggplot(df, aes(x=N, y=Value,color=N)) + theme_bw(base_size = 20)+ geom_boxplot()`

many thanks

Answer

You can overlay all four boxplots in a single column, but the plot will be unreadable. The first example below removes `N`

as the x coordinate, but keeps `N`

as the colour aesthetic. This results in the four levels of `N`

being plotted at a single tick mark (which I've removed by setting `breaks`

to `NULL`

). However, the plots are still dodged. To plot them one on top of the other, set the dodge width to zero, as I've done in the second example. However, the plots are not readable when they are overlaid.

```
ggplot(df, aes(x="", y=Value,color=N)) +
theme_bw(base_size = 20) +
geom_boxplot() +
scale_x_discrete(breaks=NULL) +
labs(x="")
ggplot(df, aes(x="", y=Value,color=N)) +
theme_bw(base_size = 20) +
geom_boxplot(position=position_dodge(0)) +
scale_x_discrete(breaks=NULL) +
labs(x="")
```

Source (Stackoverflow)