同一标题,但问题完全被重新措辞。
为什么alpha在第一个图中有效而在第二个图中无效?我很难理解为什么硬编码值时矩形绘制在正确位置但不透明,但在数据框中却按预期工作?
mtcars$cyl <- factor(mtcars$cyl)
mtcars$am <- factor(mtcars$am)
ggplot(mtcars) +
geom_density(aes(x=disp, group=cyl, fill=cyl), alpha=0.6, adjust=0.75) +
geom_rect(data=data.frame(xmin=100, xmax=200, ymin=0, ymax=Inf), aes(xmin=xmin, xmax=xmax, ymin=ymin,ymax=ymax), fill="red", alpha=0.2)
ggplot(mtcars) +
geom_density(aes(x=disp, group=cyl, fill=cyl), alpha=0.6, adjust=0.75) +
geom_rect(aes(xmin=100, xmax=200, ymin=0,ymax=Inf), fill="red", alpha=0.2)
geom_rect(..., alpha=.1)
不起作用,而annotate("rect", ... alpha=.1)
起作用。 - Stuartgeom_rect()
调用不会产生所需的alpha
值,因为正如@sc_evans所解释的那样,它会为数据框中的每一行创建一个图层。相比之下,annotate()
是一个特殊的图层,不会映射到数据框,因此只会绘制一个矩形(请参阅annotate()
的帮助文件)。 - Stefan Aveyalpha
是多少(在 0 到 1 之间),都没有透明度。为什么? - Hercules Apergis