闪亮的绘图R-在图形之间切换时,保持缩放

时间:2019-06-03 19:43:36

标签: r shiny plotly r-plotly

我有一个闪亮的应用程序,可以用绘图方式绘制多个ggplot2散点图。在散点图之间切换时如何保持缩放固定?

我正在寻找类似的东西,但对于Shiny Plotly R:https://community.plot.ly/t/preserving-ui-state-like-zoom-in-dcc-graph-with-uirevision/15793

编辑:

我当前正在尝试实现plotlyProxy(),但是到目前为止还没有成功。

这是我目前拥有的(多余的代码已删除):

server <- function(input, output, session) {


  output$trendPlot <- renderPlotly({

    # build graph with ggplot syntax
    p <- ggplot()

    zoom <- event_data("plotly_relayout","source")

    observeEvent(lims(), {
      plotlyProxy("plot", session) %>%
        plotlyProxyInvoke("relayout", list(xaxis.range = list(zoom$`xaxis.range[0]`,zoom$`xaxis.range[1]`),
                                           yaxis.range = list(zoom$`yaxis.range[0]`,zoom$`yaxis.range[1]`)))
    })

  })


}

但是它什么也没做。当我切换到其他散点图时,该图仍会重置x轴和y轴。

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,这就是我解决问题的方式:

server <- function(input, output) {

output$trendPlot <- renderPlotly({

zoom <- event_data("plotly_relayout")

# build graph with ggplot syntax
if(is.null(zoom) || names(zoom[1]) %in% c("xaxis.autorange", "width") ||names(zoom[3])==c("xaxis.showspikes")) {
   p <- ggplot()
}
else{
p <- ggplot() + 
scale_y_continuous(limits=c(zoom$`yaxis.range[0]`,zoom$`yaxis.range[1]`)) +
scale_x_continuous(limits=c(zoom$`xaxis.range[0]`,zoom$`xaxis.range[1]`))
    }

  })


}