![](/img/trans.png)
[英]R ggplot2: overlaying multiple geom_ribbon objects in a single plot using a nested loop
[英]R plotly - wrong display when overlaying semi-transparent objects (in my case geom_ribbon)
當我運行以下行時:
library(plotly)
set.seed(1)
x <- 1:100
y1 <- sin(seq(1, 2*pi, length.out = 100))
y2 <- cos(seq(1, 2*pi, length.out = 100))
plotdata <- rbind(data.frame(x=x, fct = replicate(100, 'sin'), y=y1, lower = (y1+runif(100, -1, -0.5)), upper = (y1+runif(100, 0.5, 1))),
data.frame(x=x, fct = replicate(100, 'cos'), y=y2, lower = (y2+runif(100, -1, -0.5)), upper = (y2+runif(100, 0.5, 1))))
p <-
ggplot(plotdata, aes(group = fct)) +
geom_line(aes(y=y, x=x)) +
geom_ribbon(aes(x=x, ymin=lower, ymax=upper), alpha = 0.3)
p
ggplotly(p)
您可以使用plot_ly()
本地完成
library(plotly)
set.seed(1)
x <- 1:100
y1 <- sin(seq(1, 2*pi, length.out = 100))
y2 <- cos(seq(1, 2*pi, length.out = 100))
plotdata <- rbind(data.frame(x=x, fct = replicate(100, 'sin'), y=y1, lower = (y1+runif(100, -1, -0.5)), upper = (y1+runif(100, 0.5, 1))),
data.frame(x=x, fct = replicate(100, 'cos'), y=y2, lower = (y2+runif(100, -1, -0.5)), upper = (y2+runif(100, 0.5, 1))))
plot_ly() %>%
add_ribbons(data = subset(plotdata, fct == "sin"),
x=~x,
ymin=~lower,
ymax=~upper,
fillcolor="rgba(128,128,128,.2)",
line = list(color="transparent"),
showlegend=FALSE) %>%
add_ribbons(data = subset(plotdata, fct == "cos"),
x=~x,
ymin=~lower,
ymax=~upper,
fillcolor="rgba(128,128,128,.2)",
line = list(color="transparent"),
showlegend=FALSE) %>%
add_lines(data = subset(plotdata, fct == "sin"),
x=~x,
y=~y,
line = list(color="black"),
showlegend=FALSE) %>%
add_lines(data = subset(plotdata, fct == "cos"),
x=~x,
y=~y,
line = list(color="black"),
showlegend=FALSE)
由reprex 包於 2022-06-29 創建 (v2.0.1)
我的回答受益於這個對一個相關但不同的問題的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.