【问题标题】:Draw "error bars" for multiple categories为多个类别绘制“误差线”
【发布时间】:2015-12-03 18:39:46
【问题描述】:

我有一个数据框,其中包含不同类别的 (min,max) 值,例如:

    case1     case2
 1 0.8945 0.8943867
 2 0.8950 0.8952849

我想绘制一个图,其中对于每个类别,只绘制一个在底部和顶部带有短水平线段的垂直线段:它看起来像一个误差线,但它没有中心点.不过,如果有必要,我可以忍受中心点。每个段都必须标有相应的类别名称,作为箱线图的框:

boxplot(df,cex.axis=1.5)

但条形的外观一定是plotCIsegments等函数的样子:

require(plotrix)
x=0:1
plotCI(x,apply(df,2,mean),li=df[1,],ui=df[2,],xlab="categories",ylab="values")

这看起来不错,但是 x 轴是数字的,而我需要 x 轴上的类别名称。另外,我不喜欢这些条彼此相距如此之远,而与情节边缘如此接近。是否可以将它们放在更靠近中心的位置,就像箱线图的盒子一样?

【问题讨论】:

  • 尝试查看我在here 发布的答案。此外,请添加样本或虚拟数据以使您的问题可重现。
  • arrows(1:2, unlist(dd[1, ]), 1:2, unlist(dd[2, ]), code = 3, angle = 90) 而不是 plotCI
  • 嗨,杰森,感谢您的评论。我将示例数据放在帖子的第一行。如果您解释我还应该添加什么,我会在我回家时做。

标签: r plot boxplot


【解决方案1】:

你至少有两种可能性:

  • 没有ggplot2

    require(plotrix)
    plotCI(apply(df,2,mean),li=df[1,],ui=df[2,],xlab="categories",ylab="values")
    axis(side = 1, at = c(1,2), labels = c("case1", "case2"))
    

  • ggplot2:

首先重新定义你的data.frame

df2 = data.frame(vmin =  c(0.8945, 0.8943867), vmax=c(0.8950, 0.8952849), case=c("case1", "case2"))

然后,使用geom_errorbar

library(ggplot2)
p <- ggplot(df2, aes(ymin = vmin, ymax = vmax, x = case))
p + geom_errorbar()

【讨论】:

  • 酷,谢谢!在没有ggplot2的解决方案中,您知道是否可以将两个条彼此靠近?在情节中间留下所有空白是不雅观的,所以我想在条形图和情节边界之间留出更多空间(就像在ggplot2 解决方案中一样)。
猜你喜欢
  • 2018-03-30
  • 2013-03-15
  • 2021-09-14
  • 2018-03-24
  • 2018-10-08
  • 2011-03-02
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
相关资源
最近更新 更多