我可能在这里遗漏了一些东西,但是为什么相同的alpha值会产生不同的结果,这取决于它是在aes内部还是外部指定的?
library(ggplot2)
library(cowplot)
data <- mtcars
data$cyl <- factor(data$cyl)
# alpha within aes
data$alpha <- 1.0
plot1 <- ggplot(data = data) +
geom_point(aes(x = wt, y = qsec, color = cyl, alpha = alpha), size = 3) +
theme_minimal()
# alpha outside aes
data$alpha <- NULL
plot2 <- ggplot(data = data) +
geom_point(aes(x = wt, y = qsec, color = cyl), size = 3, alpha = 1.0) +
theme_minimal()
print(plot_grid(plot1, plot2, nrow = 1))
在我的理解中,plot1和plot2应该是相似的,但是plot1的alpha明显低于1。0.
1条答案
按热度按时间pgky5nke1#
默认情况下,
alpha
的比例为[0,1],您可以在alpha
帮助文件(?scales::alpha
)中看到这一点。当你在plot2中将alpha = 1.0
置于aes()
之外时,使用的就是这个比例。当您在aes()
中调用alpha = alpha
时,您将根据df
中alpha
列的分布覆盖默认的[0,1]。由于您在df
(i.即1.0),则该值被视为中点。下面是另一个示例,您可以更清楚地看到刻度覆盖: