如何修改R中多个Plotly图的图例

时间:2016-12-04 07:24:46

标签: r ggplot2 plotly

我有很多单独的ggplotly对象,其中一些带有图例,有些没有。

我想为这些ggplotly对象创建共享X轴的单个视图。(我正在使用plotp的subplot())

使用子图方法我想实现以下

  1. 不将所有图例分组到一个图例中。

  2. 当单个ggplotly对象没有时,不要添加图例。

  3. 示例代码

    df <- structure(list(Tool = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
                                            3L), .Label = c("ToolA", "ToolB", "ToolC"), class = "factor"), 
                         StartTime = structure(c(1456383600, 1464291720, 1456383600, 
                                                 1460710380, 1464291780, 1456383600, 1456383600, 1460710380
                         ), class = c("POSIXct", "POSIXt"), tzone = "MET"), Category = structure(c(1L, 
                                                                                                   2L, 3L, 1L, 2L, 3L, 4L, 4L), .Label = c("C1", "C2", "C3", 
                                                                                                                                           "null"), class = "factor"), Type = structure(c(4L, 2L, 2L, 
                                                                                                                                                                                          3L, 3L, 2L, 1L, 1L), .Label = c("null", "T1", "T2", "T3"), class = "factor")), .Names = c("Tool", 
                                                                                                                                                                                                                                                                                    "StartTime", "Category", "Type"), row.names = c(NA, -8L), class = "data.frame")
    

    数据

    > df
       Tool           StartTime Category Type
    1 ToolA 2016-02-25 08:00:00       C1   T3
    2 ToolA 2016-05-26 21:42:00       C2   T1
    3 ToolA 2016-02-25 08:00:00       C3   T1
    4 ToolB 2016-04-15 10:53:00       C1   T2
    5 ToolB 2016-05-26 21:43:00       C2   T2
    6 ToolB 2016-02-25 08:00:00       C3   T1
    7 ToolC 2016-02-25 08:00:00     null null
    8 ToolC 2016-04-15 10:53:00     null null
    

    Plotly

    pOne <- ggplotly(ggplot(data=df[df$Tool=="ToolA",],aes(x=StartTime ,y= Tool, colour=Type))+
                       geom_point(alpha=0.8,size=4)) %>% layout(legend = list(orientation = 'h'))
    
    pTwo <- ggplotly(ggplot(data=df[df$Tool=="ToolB",],aes(x=StartTime ,y= Tool,colour=Category))+
                        geom_point(alpha=0.8,size=4)) %>% layout(legend = list(orientation = 'h'))
    
    pThree <- ggplotly(ggplot(data=df[df$Tool=="ToolC",],aes(x=StartTime ,y= Tool))+
                        geom_point(alpha=0.8,size=4)) %>%  layout(showlegend = FALSE)
    
    subplot(pOne,pTwo,pThree, nrows=3, shareX= T,which_layout = 1)
    

    实际行为

    以红色突出传说 enter image description here

    预期行为 http://test.google.com/-mi

    如何获得预期的行为?请帮忙。

1 个答案:

答案 0 :(得分:0)

  

[回答我自己的问题,因为这是我的方向]

我没有使用情节的子图功能,而是发现shiny dashboard是更好的解决方案。它不仅可以直接从绘图中获取多个图,还可以从ggplot对象中获取多个图。

唯一的缺点是我们无法使图表在闪亮的仪表板中共享相同的轴。除此之外,我发现shinyDashboard还有助于更好地构建闪亮应用程序的UI。

我摆弄了flexDashboard,但发现它的互动性足以满足我的需求。