R ggplot透明度-以其他变量为条件的alpha值

Posted

技术标签:

【中文标题】R ggplot透明度-以其他变量为条件的alpha值【英文标题】:R ggplot transparency - alpha values conditional on other variable 【发布时间】:2014-09-08 03:40:00 【问题描述】:

我有以下数据:[R graphics Cookbook 中的示例]

Cultivar Date Weight sd          n  se          big
c39     d16   3.18  0.9566144   10  0.30250803  TRUE
c39     d20   2.8   0.2788867   10  0.08819171  TRUE
c39     d21   2.74  0.9834181   10  0.3109841   TRUE
c52     d16   2.26  0.4452215   10  0.14079141  FALSE
c52     d20   3.11  0.7908505   10  0.25008887  TRUE
c52     d21   1.47  0.2110819   10  0.06674995  FALSE

我想要一个条形图,其中条形透明度取决于big 变量。

我尝试了以下方法,我尝试根据不同的big 值设置alpha 值:

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge", stat="identity")
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge", stat="identity", alpha=cabbage_exp$big=c("TRUE"= 0.9, "FALSE" = 0.35)) 
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
 geom_bar(position="dodge", stat="identity", alpha=big=c("TRUE"= 0.9, "FALSE" = 0.35))

我想根据大变量的值在条形图中设置不同的透明度。非常感谢任何帮助或指导!

【问题讨论】:

【参考方案1】:

这里的问题是您的变量是离散的,而 alpha 规模是连续的。一种方法是在绘图之前手动计算您的 alpha 值:

alpha <- ifelse(d$big, 0.9, 0.35)
ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
    geom_bar(position="dodge", stat="identity", aes(alpha=alpha))

缺点是您不会得到正确的 alpha 值图例。你可以用这个删除它:

ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
    geom_bar(position="dodge", stat="identity", aes(alpha=big)) +
    scale_alpha_continuous(guide=FALSE)

最终结果:

【讨论】:

【参考方案2】:

使用scale_alpha_discrete 的另一种可能性,其中range 参数可用于为每个“大”级别设置所需的alpha 值。

ggplot(data = cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar, alpha = big)) +
  geom_bar(position = "dodge", stat = "identity") +
  scale_alpha_discrete(range = c(0.35, 0.9))

【讨论】:

我认为这是一个更好的解决方案,至少有一个正确的图例并且不需要事先计算 alpha 值。 在以 0 为中心的连续变量的情况下,是否可以给出梯度而不是范围?所以像c(0.9, 0.3, 0.9) 当您只想在条形图上显示特定级别的线趋势时,这也是一个很好的解决方案! (本质上是在 geom_line 上绘制部分数据,在 geom_bar 上绘制完整数据)非常感谢!!!!

以上是关于R ggplot透明度-以其他变量为条件的alpha值的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化改变图中线条的透明度级别实战

R可视化包ggplot2设置透明背景实战

如何使用 ggplot2 在 R 中制作具有透明背景的图形?

将ggplot2包装在plotly R中时,图例中的额外变量

R语言可视化R原生plot函数色彩半透明色彩全透明不透明色彩处理ggplot2颜色透明示例

R语言绘制动态图