我正在尝试将摘要统计信息添加到我的情节中,但希望它们具有一定的透明度。这似乎不适用于geom_crossbar。以示例代码from the documentation:
为例df <- data.frame(
trt = factor(c(1, 1, 2, 2)),
resp = c(1, 5, 3, 4),
group = factor(c(1, 2, 1, 2)),
upper = c(1.1, 5.3, 3.3, 4.2),
lower = c(0.8, 4.6, 2.4, 3.6)
)
p <- ggplot(df, aes(trt, resp, colour = group))
p + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2, alpha=0.3)
工作正常,即错误栏是透明的。但是,如果我使用
p + geom_crossbar(aes(ymin = lower, ymax = upper), width = 0.2, alpha=0.3)
相反,透明度不起作用。我错过了什么吗?
编辑:mt1022的答案适用于示例代码。但是,当我尝试将其添加到我的实际绘图中时,透明度不再起作用,并且它会更改绘图中的所有其他颜色。
Here是数据,这是我的命令:
ggplot(plotdata3, aes(x=Ncases, y=Intercept.ols, group=col, colour=col)) + geom_point() + stat_summary(fun.y="mean", geom="line", alpha=0.3, aes(group=1)) +
stat_summary(fun.data="mean_cl_boot", geom="crossbar", width=0.08, aes(group=1)) + scale_color_manual(values=rgb(matrix(rep(0,27), ncol=3),alpha = 0.5)) +
scale_y_continuous(breaks=seq(0,1,by=0.1)) + coord_cartesian(ylim=c(0,1))
当我省略scale_color_manual()部分时,情节看起来like this,现在我想让交叉条变得透明,就像直线一样。
答案 0 :(得分:2)
我不确定你要去的地方,但似乎有一些问题。首先,您使用颜色来区分9种不同的类别(&#34; col&#34;)。即使使用ggplot的默认调色板(色轮周围的色调相等),颜色也几乎无法区分。通过选择点大小以及将点放在摘要图形(线和横杆)下面的事实会使问题变得更糟。
你可能会更好下面是两个例子,由@ lukeA&#39解决方案生成的图(实际上回答了问题),以及实现上述建议的图。
ggplot(plotdata3, aes(x=Ncases, y=Intercept.ols, group=col, colour=col)) +
geom_point() +
stat_summary(fun.y="mean", geom="line", alpha=0.3, aes(group=1)) +
stat_summary(fun.data="mean_cl_boot", geom="crossbar",
width=0.08, aes(group=1), color = "#30303030") +
scale_y_continuous(breaks=seq(0,1,by=0.1)) +
coord_cartesian(ylim=c(0,1))
ggplot(plotdata3, aes(x=Ncases, y=Intercept.ols)) +
stat_summary(aes(group=1), fun.y="mean", geom="line", alpha=0.3) +
stat_summary(fun.data="mean_cl_boot", geom="crossbar",
width=0.08, fill="grey80", color="grey50") +
geom_point(aes(group=col, fill=col), size=3, shape=21) +
scale_fill_brewer(palette="Set1") +
scale_y_continuous(breaks=seq(0,1,by=0.1)) + coord_cartesian(ylim=c(0,1))
第二个情节清楚地表明&#34; col&#34; 6和9往往明显低于平均值,&#34; col&#34; 1和7往往明显高于平均值。
答案 1 :(得分:1)
alpha
中的geom_crossbar
参数控制填充颜色的透明度;
如果指定填充颜色并调整alpha
,填充颜色的透明度将会改变,但边框颜色不会改变;
p + geom_crossbar(aes(ymin = lower, ymax = upper), width = 0.2, alpha=0.2, fill = 'red')
p + geom_crossbar(aes(ymin = lower, ymax = upper), width = 0.2, alpha=0.8, fill = 'red')
如果您想为边框颜色提供透明度,可以使用透明色的scale_colour_manual
:
p + geom_crossbar(aes(ymin = lower, ymax = upper), width = 0.2) +
scale_color_manual(values = rgb(c(1, 0), c(0, 1), 0, alpha = 0.2))
可能还有其他更简单的解决方案。
答案 2 :(得分:0)
colour="transparent"
将胜任,position=position_dodge(0.1)
将避免重叠。
p + geom_crossbar(aes(ymin = lower, ymax = upper), width = 0.2, colour="transparent", position=position_dodge(0.1))