R ggplotly重复的图例

时间:2019-06-16 13:40:54

标签: r ggplot2 ggplotly

我尝试生成一个图,每个点都代表一个事件。颜色,大小和faced_grid用于以可视方式提供其他可用信息。该图在ggplot2中运行,但是了解确切数字通常很重要,因此需要一个交互式版本,该版本可以将鼠标悬停在该点上并获取信息。我试图从plotly-package中使用ggplotly函数将绘图转换为交互式版本。然后的问题是,图例不仅显示了所使用属性的不同状态,而且还包含每个现有的组合。此外,它不显示来自geom_rect的信息。

我发现了相关的问题/相似的问题,但是他们使用了plot_ly函数而不是ggploty或没有提供答案。

以下是mtcars数据集说明的相同问题:

library(plotly)

g = ggplot(mtcars,aes(x=mpg,y=disp,color = as.factor(cyl),size =as.factor(gear))) +
    geom_point() +
    geom_text(label = c(rep("A",nrow(mtcars)-5),rep("B",5)),color = "black",size=4) +
    geom_rect(data=data.frame(name="zone",Start=20,End = 30,ymin = -Inf,ymax = Inf),aes(xmin=Start, xmax=End, ymin=ymin, ymax=ymax,fill=name),inherit.aes = FALSE,alpha=0.3)+
    facet_grid(vs~am)
g

这是结果以及它的外观:ggplot Graph

现在使用ggplotly

ggplotly(g)

这是结果:ggploty Graph

(1)图例现在是用于颜色和大小的不同属性的组合

(2)geom_rect在图例中,但未显示在图中

有人知道如何像ggplot2一样在ggplotly中获得相同的图吗?我很感谢每一个提示。谢谢

戴夫

1 个答案:

答案 0 :(得分:0)

当您使用ggplotly时,我不知道如何解决图例的组合。但是,我可以解决第二个问题,如果您不使用Inf和-Inf,则geom_rect将起作用:

ggplotly(ggplot(mtcars,aes(x=mpg,y=disp, = as.factor(cyl),size =as.factor(gear))) +
             geom_rect(aes( xmin=20, 
                            xmax=30, 
                            ymin=0, 
                            ymax=max(mtcars$disp),
                            fill="Name"),
                       inherit.aes = FALSE, alpha=0.3) +
             geom_point() +
             geom_text(label = c(rep("A",nrow(mtcars)-5),rep("B",5)), = "black",size=4) +
             facet_grid(vs~am)) 

但是,传说很糟糕。 我建议使用子图在Plotly中创建相同的东西,并且我认为Ben提到的此链接将帮助您创建每个子图。要提到的一件事是,我很难在图例中用图例说明不同的大小,尽管标记的大小会有所不同,但不会出现大小比例的图例。也许规模会是一个更好的选择。