我有一个闪亮的应用程序,可以用绘图方式绘制多个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轴。
答案 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]`))
}
})
}