gpt4 book ai didi

r - geom_rect 和 alpha - 这是否适用于硬编码值?

转载 作者:行者123 更新时间:2023-12-03 05:53:26 25 4
gpt4 key购买 nike

相同的标题,但完全改写了问题。

为什么 alpha 在第一个图中起作用,但在第二个图中不起作用?我很难理解为什么使用硬编码值时,矩形会绘制在正确的位置但不会变得透明,但在 data.frame 中时它会按预期工作?

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)

最佳答案

这让我很困惑,所以我去谷歌,结果是 learning something new (在解决了示例中的一些异常情况之后)。

显然,您正在做的是在彼此之上绘制许多矩形,从而有效地消除了您想要的半透明度。因此,克服这个问题的唯一方法是在单独的 df 中对矩形坐标进行硬编码,或者...

ggplot() + 
geom_density(data=mtcars, aes(x=disp, group=cyl, fill=cyl), alpha=0.6, adjust=0.75) +
geom_rect(aes(xmin=100, xmax=200, ymin=0,ymax=Inf), alpha=0.2, fill="red")

...只是不要将 data.frame 全局分配给绘图。相反,仅在您想要的图层中使用它(在本例中为geom_密度),并让其他图层自由!或者,更好的是,使用 annotate 来修改默认 df 下的绘图:

ggplot(mtcars) + 
geom_density(aes(x=disp, group=cyl, fill=cyl), alpha=0.6, adjust=0.75) +
annotate("rect", xmin=100, xmax=200, ymin=0, ymax=Inf, alpha=0.2, fill="red")

后一种方法使您能够对整个绘图使用单个 data.frame,因此您不必为每个图层指定相同的 df。

两种方法返回相同的图:

enter image description here

关于r - geom_rect 和 alpha - 这是否适用于硬编码值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17521438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com