我有一个与此相似的情节
使用以下数据:
Cultivar Date Weight sd n se
1 c39 d16 3.18 0.9566144 10 0.30250803
2 c39 d20 2.80 0.2788867 10 0.08819171
3 c39 d21 2.74 0.9834181 10 0.31098410
4 c52 d16 2.26 0.4452215 10 0.14079141
5 c52 d20 3.11 0.7908505 10 0.25008887
6 c52 d21 1.47 0.2110819 10 0.06674995
我使用以下代码完成了绘图:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge") +
scale_fill_manual (values =c("#90353B", "burlywood1"))
我想做什么:根据se的值为C52(burlywood1
)分配不同的颜色密度/亮度,因此se的较高值具有较暗的色调,较低的值具有较浅的黄色色调
我试图将scale_colour_gradient2
嵌套在scale_fill_manual
中但是它没有用。有没有办法做到这一点?
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge") +
scale_fill_manual (values =c("#90353B", scale_colour_gradient2(low="#22FF00", mid="white", high="#FF0000", midpoint=median(cabbage_exp$se))))
答案 0 :(得分:1)
只需将se
映射到alpha
的静脉:
library(ggplot2)
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar, alpha = se)) +
geom_bar(position="dodge", stat = "identity") +
scale_alpha(range = c(.5, 1)) +
scale_fill_manual (values =c("#90353B", "burlywood1"))
这会创建范围从0.5到1(=不透明)的Alpha值。
修改强>
如果您只想让1种颜色透明,请添加其他Alpha列,例如像这样:
cabbage_exp$alpha[cabbage_exp$Cultivar == "c52"] <- scales::rescale(cabbage_exp$se[cabbage_exp$Cultivar == "c52"], to = c(.5, 1))
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar, alpha = alpha)) +
geom_bar(position="dodge", stat = "identity") +
scale_alpha(range = c(.5, 1)) +
scale_fill_manual (values =c("#90353B", "burlywood1"))