For循环并排绘制一系列箱形图

时间:2018-11-27 13:51:30

标签: r for-loop plot

我有一个带有三个变量的数据框:

df <- data.frame(
  level = rep(c(2,2,1,1,0,0),3),
  names = c(rep("name1",6),rep("name2",6),rep("name3",6)),
  values = c(rnorm(6)-1, rnorm(6), rnorm(6)+1)
)

现在,我想在df$names循环中为df$values中的每个级别绘制df$levelfor上的分布。尽管此for循环确实绘制了所需的箱形图,但它们将它们全部绘制在同一帧中,而不是像预期的那样并排:

for(i in unique(df$names)){
  par(new=T)
  boxplot(df[df$names==i,]$values ~ df[df$names==i,]$level)
}

如何更改代码,以便并排显示每个df$names的箱形图?

2 个答案:

答案 0 :(得分:2)

使用 ggplot2

library(ggplot2)

ggplot(df, aes(as.factor(level), values)) +
  geom_boxplot() +
  facet_grid(.~names)

enter image description here

答案 1 :(得分:1)

你非常亲近

par(mfrow=c(1,3))

for(i in unique(df$names)){
  boxplot(df[df$names==i,]$values ~ df[df$names==i,]$level)
}

enter image description here