2017-08-09 65 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

谢谢。在这种情况下,图层顺序无关紧要,看起来您的第二个解决方案可以解决订单确实重要的情况。 –