在ggplot / Plotly中设置图例的alpha

时间:2017-08-09 22:47:48

标签: r ggplot2 plotly

如何在plotly图中获取图例,以便不继承图中使用的alpha值?

我知道如何使用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

情节版:

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,你无法控制传奇的不透明度。

如果查看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
相关问题