根据变量设置ggplot geom_path的宽度

时间:2014-01-04 06:40:39

标签: r ggplot2

我有两个函数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值都有一大组条形。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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