【问题标题】:Set alpha of legend in ggplot/Plotly在 ggplot/Plotly 中设置图例的 alpha
【发布时间】:2017-08-09 22:47:47
【问题描述】:

如何让 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 版本:

剧情版:

【问题讨论】:

    标签: r ggplot2 plotly


    【解决方案1】:

    据我所知,您无法控制图例的不透明度。

    如果您查看ggplotly 的字符串输出,您可以看到有 2x3 的痕迹。每只海狸 3 条轨迹,1 条用于标记,1 条用于连接线,1 条用于平滑线。第一条迹线确定了图例,因此您只需重新排列 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
    

    另一种解决方案是打开和关闭图例。

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

    【讨论】:

    • 谢谢。在这种情况下,图层顺序无关紧要,看起来您的第二个解决方案可以解决顺序确实重要的情况。
    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 2020-12-01
    • 2018-12-15
    • 1970-01-01
    • 2020-10-30
    • 2017-11-13
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多