【发布时间】:2016-01-25 21:57:19
【问题描述】:
我最近升级到 R 版本 3.2.3 和 ggplot 版本 2.0.0。
尝试将一些旧代码升级到较新版本时,我遇到了 ggplot2 及其透明度设置的奇怪行为。
现在我的问题是,这是一个错误还是一个功能(如果是这样,有人可以告诉我为什么这样做很好)?我想要的结果是(显然)情节 2。
假设我绘制一条线并在其上放置一个透明矩形,如下所示:
library(ggplot2)
plot_data <- data.frame(x = 1:100, y = rnorm(100))
# Plot 1
ggplot(data = plot_data, aes(x = x, y = y)) +
geom_line() +
geom_rect(aes(xmin = 20, xmax = 50, ymin = -Inf, ymax = Inf), fill = "red",
alpha = 0.1) + ggtitle("Plot 1")
# Plot 2
ggplot() +
geom_line(data = plot_data, aes(x = x, y = y)) +
geom_rect(aes(xmin = 20, xmax = 50, ymin = -Inf, ymax = Inf), fill = "red",
alpha = 0.1) + ggtitle("Plot 2")
据我了解,情节 1 和情节 2 应该是相同的。但是,我得到以下图:
情节 1:
和情节 2:
此外,如果我使用 alpha 值(例如将它们设置为 0.01,我会得到以下两个图:
和
【问题讨论】:
-
在您的情节 2 中,如果您将 data = plot_data 添加到您的 geom_rect() 中,您将获得与 plot1 相同的结果
-
这很有趣,但在我的理解中并没有反映 0.1 的 alpha(非常透明)!