【问题标题】:Set the width of ggplot geom_path based on a variable根据变量设置 ggplot geom_path 的宽度
【发布时间】:2014-01-05 14:48:08
【问题描述】:

我有两个函数,ab,每个函数从 1-3 取值 x,并产生一个估计值和一个错误。

x    variable    estimate   error
1    a           8          4
1    b           10         2
2    a           9          3
2    b           10         1
3    a           8          5
3    b           11         3

我想在 ggplot 中使用 geom_path() 来绘制每个函数随着 x 增加的估计值和误差。

所以如果这是数据:

d = data.frame(x=c(1,1,2,2,3,3),variable=rep(c('a','b'),3),estimate=c(8,10,9,10,8,11),error=c(4,2,3,1,5,3))

那么我想要的输出类似于:

ggplot(d,aes(x,estimate,color=variable)) + geom_path()

但是每个点的线的粗细等于误差的大小。我可能需要使用geom_polygon() 之类的东西,但如果不手动计算一系列坐标,我一直无法找到一种好方法。

如果有更好的方法来可视化这些数据(y 值和离散 x 值的置信区间),那就太好了。我不想使用条形图,因为我实际上有两个以上的函数,并且很难在每个 x 值处使用一大组条形跟踪任何特定函数的不断变化的估计/误差。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    简短的回答是您需要将size 映射到error 以便几何对象的大小将根据值而变化,在这种情况下为error。有很多方法可以按照您的建议做您想做的事情。

    df = data.frame(x = c(1,1,2,2,3,3),
                    variable = rep(c('a','b'), 3), 
                    estimate = c(8,10,9,10,8,11), 
                    error = c(4,2,3,1,5,3))
    
    library(ggplot2)
    ggplot(df, aes(x, estimate, colour = variable, group = variable, size = error)) + 
      geom_point() + theme(legend.position = 'none') + geom_line(size = .5)
    

    【讨论】:

      【解决方案2】:

      我找到了geom_ribbon()。答案是这样的:

      ggplot(d,aes(x,estimate,ymin=estimate-error,ymax=estimate+error,fill=variable)) + geom_ribbon()
      

      【讨论】:

        猜你喜欢
        • 2021-12-28
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多