R语言 为什么aes内部和外部相同的alpha值在ggplot2中表现不同?

dldeef67  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(151)

我可能在这里遗漏了一些东西,但是为什么相同的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.

pgky5nke

pgky5nke1#

默认情况下,alpha的比例为[0,1],您可以在alpha帮助文件(?scales::alpha)中看到这一点。当你在plot2中将alpha = 1.0置于aes()之外时,使用的就是这个比例。当您在aes()中调用alpha = alpha时,您将根据dfalpha列的分布覆盖默认的[0,1]。由于您在df(i.即1.0),则该值被视为中点。
下面是另一个示例,您可以更清楚地看到刻度覆盖:

data$alpha <- runif(n = 32)

ggplot(data, aes(x = wt, y = qsec, color = cyl, alpha = alpha)) +
  geom_point(size = 3) +
  theme_minimal()

相关问题