gpt4 book ai didi

r - ggplot2 中的透明 mask

转载 作者:行者123 更新时间:2023-12-04 10:12:37 24 4
gpt4 key购买 nike

我对仅在功能区附近包含面板网格线的方法很感兴趣——我可以在一个简单的示例中手动执行此操作

library(ggplot2)

d1 <- data.frame(x = seq(0, 1, length.out = 200))
d1$y1 <- -3*(d1$x-.5)^2 + 1
d1$y2 <- -3*(d1$x-.5)^2 + 2

ggplot(d1) +
geom_ribbon(aes(x, ymin = y1, ymax = y2),
alpha = .25) +
geom_ribbon(aes(x, ymax = y1),
ymin = .25,
fill = "white") +
geom_ribbon(aes(x, ymin = y2),
ymax = 2,
fill = "white") +
scale_y_continuous(limits = c(.25, 2.0),
expand = c(0, 0))+
scale_x_continuous(limits = c(0, 1),
expand = c(0, 0))+
theme_bw() +
theme(panel.grid = element_line(linetype = 1, color = "black"))

example of clipping

是否有一些更简单的方法来为这些网格线设置透明 mask ,使它们只出现在丝带下方?

最佳答案

如果可以接受与背景颜色相同的网格线,您可以删除实际的网格线,然后使用 geom_hline()geom_vline() 制作您自己的“网格线” "将显示在丝带上但在背景中不可见

d1$y3 <- d1$x + 0.3
d1$y4 <- d1$x + 0.4

ggplot(d1) +
geom_ribbon(aes(x, ymin = y1, ymax = y2), alpha = 0.25) +
geom_ribbon(aes(x, ymin = y3, ymax = y4), alpha = 0.25, fill = "blue") +
# use geom_vline and geom_hline to plot "gridlines" on top of ribbons
geom_hline(yintercept = seq(0, 2, by = 0.25), colour = "white") +
geom_vline(xintercept = seq(0, 1, by = 0.25), colour = "white") +
scale_y_continuous(limits = c(.25, 2.0), expand = c(0, 0)) +
scale_x_continuous(limits = c(0, 1), expand = c(0, 0)) +
theme_bw() +
theme(panel.grid.minor = element_blank(), # remove actual gridlines
panel.grid.major = element_blank())

产生这个: enter image description here

这仍然是一种解决方法,只会制作与背景颜色匹配的网格线,但它很容易用于各种绘图,例如您提到的使用多个色带的情况(我已经添加了第二个色带证明这会起作用)

关于r - ggplot2 中的透明 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409604/

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