【问题标题】:Issue with boxplot factors箱线图因素的问题
【发布时间】:2023-03-24 23:22:01
【问题描述】:

我在尝试按因素制作并排箱线图时遇到问题。我已经阅读了几个示例,但由于某种原因,我的绘图无法正确显示。我认为它试图为每个值绘制一个箱线图,即使我将它指定为一个因素。

我正在使用以下代码:

samp.norm = rnorm(1000,0,1)
samp.exp  = rexp(1000,1)
samp.unif = runif(1000)
samp = c(samp.norm,samp.exp,samp.unif)
dist = c( rep("norm",1000), rep("exp",1000), rep("unif",1000) )
DATA = as.data.frame(cbind(samp,dist))
DATA$dist= as.factor(DATA$dist)
p = ggplot(DATA, aes(x=factor(DATA$dist), y = DATA$samp)) + geom_boxplot()
p

【问题讨论】:

    标签: r ggplot2 boxplot


    【解决方案1】:

    问题是您使用 cbind() 会强制生成的对象,因此 DATA$samp 是一个因子而不是数字。从 cbind 产生的列需要具有相同的类,这意味着它们在这种情况下用于“字符”的最低常见恶魔类。这正是发明数据帧来解决的问题。

    试试

    DATA=data.frame(samp,dist) 
    

    而不是你得到的更复杂的线,这一切都应该工作。

    顺便说一句,你也应该有更简单的

    p=ggplot(DATA, aes(x=dist, y = samp)) + geom_boxplot()
    

    而不是你的倒数第二行。一旦你指定了 ggplot() 你正在使用 DATA,你不需要告诉它在哪里可以找到 dist 和 samp 即不需要 DATA$dist,只需要 dist。此外,由于 dist 已经是一个因素,您不需要指定 factor(dist)。

    【讨论】:

    • 谢谢!现在有道理了。在此过程中,我一定在某个地方养成了一些不良的 R 编程习惯。
    【解决方案2】:

    +1 给@PeterEllis。请注意,您还可以比他的建议更简单:

    boxplot(samp~dist)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多