2017-08-09 41 views
2

如何獲取plotly圖中的圖例不會繼承圖中使用的alpha值?在ggplot中設置圖例的alpha值/ Plotly

我知道如何使用ggplot2來做到這一點:guides(colour = guide_legend(override.aes = list(alpha=1)))但這並沒有轉化爲情節。

有沒有類似的選項plotly?當從ggplot轉換爲plotly時,無論我做什麼,它似乎都會接受圖例的alpha值。

示例代碼:

library(ggplot2) 
library(plotly) 

D <- rbind(beaver1,beaver2) 
D$beaver= c(rep('A',nrow(beaver1)),rep('B',nrow(beaver2))) 

p <- ggplot(D,aes(x=time,y=temp,color=beaver,group=day))+ 
    geom_point(alpha=.1,show.legend = F)+ 
    geom_line(alpha=.1,show.legend = F)+ 
    geom_smooth(se=F) 

ggplotly(p) 

的ggplot版本:

ggplot version

的plotly版本:

enter image description here

回答

1

據我知道你無法控制的不透明度的權利ND。

如果你看看ggplotly的字符串輸出,你可以看到有2x3的痕跡。每條海狸有3條痕跡,一條用於標記,一條用於連接線,另一條用於平滑線。第一個跟蹤確定了圖例,所以你可以重新排列你的ggplot,它應該工作。

library(ggplot2) 
library(plotly) 

D <- rbind(beaver1,beaver2) 
D$beaver= c(rep('A',nrow(beaver1)),rep('B',nrow(beaver2))) 

p <- ggplot(D,aes(x=time,y=temp,color=beaver,group=day))+ 
    geom_smooth(se=F)+ 
    geom_point(alpha=.1,show.legend = F)+ 
    geom_line(alpha=.1,show.legend = F) 


gp <- ggplotly(p) 
gp 

enter image description here

另一解決方案將是打開和關閉的圖例。

gp$x$data[[1]]$showlegend <- FALSE 
gp$x$data[[2]]$showlegend <- FALSE 
gp$x$data[[5]]$showlegend <- TRUE 
gp$x$data[[6]]$showlegend <- TRUE 
+1

謝謝。在這種情況下,圖層順序無關緊要,看起來您的第二個解決方案可以解決訂單確實重要的情況。 –