簡體   English   中英

R plotly - 覆蓋半透明對象時顯示錯誤(在我的情況下為geom_ribbon)

[英]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)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM