ggplot在plotly中缺少图例。

6

我在使用plotly和ggplot2绘制图形时,无法显示图例。具体是在使用ggplot + geom_line时出现问题。

我正在使用版本为3.6.0的plotly和版本为2.1.0的ggplot2。

为了演示我的问题,我将构建一个简单的数据框:

x = 1:5
y1 = 1:5
y2 = y1 * 2
d = data.frame(x, y1, y2)

g = ggplot(data = d, aes(x=x)) +
geom_line(aes(y = y1, col = 'y1')) + 
geom_line(aes(y = y2, col = 'y2')) + 
scale_color_manual(values = c('red', 'blue'), labels = c('y1 lab', 'y2 lab'), name = '')
g

这将创建一个带有图例的ggplot图形。然而,当我尝试使用plotly创建交互式版本时,图例不再存在。

ggplotly(g)

我尝试了以下方法来解决问题:

g_build = plotly_build(g)
g_build$layout$showlegend <- TRUE
g_build$layout$margin <- list(l=80, r=300, b=80, t=100, pad=0)
g_build

如果下面的帖子解决了您的问题,请考虑通过在帖子旁边标记检查来接受它作为解决方案。如果您觉得问题没有解决,请考虑使用您的其他关注点更新您的问题。 - Cyrus Mohammadian
1个回答

3
library(reshape2)

d<-melt(d,id="x")
g <- ggplot(data = d, aes(x=x, y=value, color=variable)) +
  geom_line() +scale_color_manual(values = c('red', 'blue'), 
                                  labels = c('y1 lab', 'y2 lab'), name = '')
ggplotly(g)

enter image description here


非常好用,非常感谢。我想当我使用ggplot时,需要停止按列组织变量(或稍后重新整形)。 - Alejandro Sotolongo
是的!这是使用ggplot2的最佳方式。 - Cyrus Mohammadian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接