【问题标题】:For loop to plot a series of boxplots side by sideFor循环并排绘制一系列箱线图
【发布时间】:2018-11-27 13:51:29
【问题描述】:

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

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)
)

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

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

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

【问题讨论】:

  • 也许使用带有构面的 ggplot2,而不是 forloop?
  • 可能这就是你想要的:boxplot(df$values ~ df$level+df$names)

标签: r for-loop plot


【解决方案1】:

使用ggplot2:

library(ggplot2)

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

【讨论】:

    【解决方案2】:

    你很亲密

    par(mfrow=c(1,3))
    
    for(i in unique(df$names)){
      boxplot(df[df$names==i,]$values ~ df[df$names==i,]$level)
    }
    

    【讨论】:

    • 好的,这很有用。理想情况下,箱线图应该都在同一个框架中。如何实现?
    • 查看 P. Paccioretti 对您原始帖子的评论
    猜你喜欢
    • 2019-10-20
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2020-05-06
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多