This question already has answers here:
geom_rect and alpha - does this work with hard coded values?
(4 个回答)
去年关闭。
所有,我不确定这个例子出了什么问题:
你可以看到,从 alpha 等于 0 到 0.2 左右,我得到了一些透明度,但在那之后它就消失了。我之前在设置 ggplot2 层的 alpha 比例时从未遇到过问题。
我在这里做错了什么?
(4 个回答)
去年关闭。
所有,我不确定这个例子出了什么问题:
library(ggplot2)
par(ask = TRUE)
alphaVals <- seq(0.1, 1, 0.1)
for(alpha in alphaVals) print(qplot(x = 1:100, y = 1:100) + geom_rect(xmin = 20, xmax = 70, ymin = -Inf, ymax = Inf, alpha = alpha, fill = 'grey50'))
你可以看到,从 alpha 等于 0 到 0.2 左右,我得到了一些透明度,但在那之后它就消失了。我之前在设置 ggplot2 层的 alpha 比例时从未遇到过问题。
我在这里做错了什么?
最佳答案
这里的问题是 ggplot2 在同一位置绘制矩形 100 次。因此,100 个堆叠的透明形状显示为单个不透明形状。我通过使用 Adobe Illustrator 检查 pdf 输出发现了这一点。我在下面提供了一个可能的解决方案(重写为使用 ggplot 语法而不是 qplot)。我当然觉得这种行为是出乎意料的,但我不确定它是否值得被称为错误。
我提出的解决方案包括 (1) 将矩形数据放在它自己的 data.frame 中,以及 (2) 在每一层中单独指定数据(但不在 ggplot()
调用中)。
library(ggplot2)
dat = data.frame(x=1:100, y=1:100)
rect_dat = data.frame(xmin=20, xmax=70, ymin=0, ymax=100)
# Work-around solution.
p = ggplot() +
geom_point(data=dat, aes(x=x, y=y)) +
geom_rect(data=rect_dat,
aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
alpha = 0.3, fill = "black")
ggsave("test.png", plot=p, height=5, width=5, dpi=150)
# Original version with 100 overlapping rectangles.
p2 = ggplot(dat, aes(x=x, y=y)) +
geom_point() +
geom_rect(xmin=20, xmax=70, ymin=0, ymax=100, alpha=0.01, fill="black")
ggsave("test.pdf", height=7, width=7)
关于r - 在 ggplot 上为矩形图层设置 alpha 比例时出现意外行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22463581/
10-15 01:49