在Shiny中设置一个绘图缩放以匹配另一个绘图缩放

达贝宁纳

我正在尝试使用plotly_relayout来获取一个绘图的x轴缩放限制,并将其应用于Shiny中的另一个绘图。到目前为止,我可以从“ plot1”(x轴限制)获取相关的plotly_relayout数据,将其转换(从数字到日期),并在绘制“ plot2”之前将其可用,但是实际上并没有设置缩放比例“ plot2”上的范围。

在大多数情况下,当我尝试放大“ plot1”时,RStudio崩溃。仅在少数几个RStudio不会崩溃的情况下,我才能看到“ plot2”中的“ coord_cartesian”没有达到预期的效果(放大plot1之后)。

我也很好奇,如果给定以下代码,RStudio的持续崩溃是正常的,还是我可能需要考虑重新构建RStudio。任何有关如何达到这种效果的想法将不胜感激!

library(ggplot2)
library(plotly)
library(shinydashboard)
library(shinyWidgets)

#Data frame with dates and bogus data
a=data.frame(Date=seq.Date(as.Date("2000-01-01"),
                           as.Date("2000-12-31"),
                           "day"),
             value=rnorm(366)
             )

#Simple dashboard with two plots
ui <- dashboardPage(
  dashboardHeader(title="Sample App"),
  dashboardSidebar(
  ),
  dashboardBody(
    plotlyOutput("plot1"),
    plotlyOutput("plot2")
  )
)

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

  #Create a reactive list, set zoomX1 and zoomX2 as NULL
  reactiveList <- reactiveValues(zoomX1=NULL,zoomX2=NULL)

  #Create a reactive function to update the reactive list every time the plotly_relayout changes
  relayout_data <- reactive({
    xvals=event_data("plotly_relayout",source="plot1")
    if (is.null(xvals$`xaxis.range[0]`)){
    } else {
      reactiveList$zoomX1=as.Date(xvals$`xaxis.range[0]`,origin="1970-01-01")
      reactiveList$zoomX2=as.Date(xvals$`xaxis.range[1]`,origin="1970-01-01")
    }
  })

  #Plot1, just plot all the data
   output$plot1 <- renderPlotly({
    g1=ggplot(a,aes(x=Date,y=value))+
      geom_point()
    ggplotly(g1,source="plot1") %>% event_register("plotly_relayout")
  })

   #Plot 2, same as Plot1, but should set the coord_cartesian based on plot1's current zoom level taken from the event_data("plotly_relayout")
   output$plot2 <- renderPlotly({
     relayout_data()
     g1=ggplot(a,aes(x=Date,y=value))+
       geom_point()+
       coord_cartesian(xlim=c(reactiveList$zoomX1,reactiveList$zoomX2))
     ggplotly(g1,source="plot2")
   })

}

shinyApp(ui = ui, server = server)
伊斯米尔谢尔夫

实际上,在我的系统上,您的代码运行正常。

但是,您可以通过使用plotly的subplot函数及其arguments来大幅减少代码shareX请检查以下示例:

library(ggplot2)
library(plotly)
library(shinydashboard)
library(shinyWidgets)

a <- data.frame(Date = seq.Date(as.Date("2000-01-01"),
                               as.Date("2000-12-31"),
                               "day"),
               value = rnorm(366))

ui <- dashboardPage(
  dashboardHeader(title = "Sample App"),
  dashboardSidebar(),
  dashboardBody(plotlyOutput("plots", height = "80vh"))
)

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

  output$plots <- renderPlotly({
    g2 <- g1 <- ggplot(a, aes(x = Date, y = value)) +
      geom_point()

    subplot(ggplotly(g1), ggplotly(g2), nrows = 2, shareX = TRUE)
  })

}

shinyApp(ui = ui, server = server)

结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ImageView缩放并设置另一个图像问题

来自分类Dev

使用交互式绘图仅在Altair中缩放一个轴

来自分类Dev

在 R 中将绘图布局从一个绘图复制到另一个绘图

来自分类Dev

从另一个类调用JFrame上的绘图

来自分类Dev

缩放图像对象以匹配另一个对象的比例

来自分类Dev

在fabricjs中的另一个画布上添加免费的绘图结果

来自分类Dev

添加动态标题以基于另一个df中的值进行绘图

来自分类Dev

在另一个类中创建的paintComponent对象上绘图

来自分类Dev

在另一个函数中声明的画布上绘图

来自分类Dev

在另一个窗口小部件包含的窗口小部件中绘图

来自分类Dev

用于将一个范围列表缩放到另一个范围的算法

来自分类Dev

将一个矩阵列表重新缩放为另一个

来自分类Dev

缩放后,一个元素的位置被更改并被另一个元素隐藏

来自分类Dev

使用另一个数据框缩放数据框中的变量

来自分类Dev

将ggplot的输出嵌入到另一个绘图中

来自分类Dev

Python / Tkinter-从另一个类和绘图图中调用变量的问题

来自分类Dev

如何基于另一个数据框创建绘图新的数据框

来自分类Dev

将ggplot的输出嵌入到另一个绘图中

来自分类Dev

D3:是否可以缩放+平移一个轴而仅平移另一个轴?

来自分类Dev

使一个元素居中于另一个响应元素并根据屏幕尺寸缩放的元素上方?

来自分类Dev

相对于另一个元素缩放元素

来自分类Dev

动态缩放堆叠在另一个物体上的物体

来自分类Dev

如何缩放旋转的矩形以始终适合另一个矩形

来自分类Dev

如何缩放旋转的矩形以始终适合另一个矩形

来自分类Dev

在具有溢出滚动和居中的另一个div内缩放div

来自分类Dev

R - 按另一个变量缩放/乘以 geom_bar 计数

来自分类Dev

当 svg 引用另一个时如何缩放 SVG

来自分类Dev

使用javascript在一个元素上设置高度以匹配另一个元素

来自分类Dev

如何在iTextSharp中创建“动作”以在页面上以“适合页面”缩放打开另一个PDF?

Related 相关文章

  1. 1

    ImageView缩放并设置另一个图像问题

  2. 2

    使用交互式绘图仅在Altair中缩放一个轴

  3. 3

    在 R 中将绘图布局从一个绘图复制到另一个绘图

  4. 4

    从另一个类调用JFrame上的绘图

  5. 5

    缩放图像对象以匹配另一个对象的比例

  6. 6

    在fabricjs中的另一个画布上添加免费的绘图结果

  7. 7

    添加动态标题以基于另一个df中的值进行绘图

  8. 8

    在另一个类中创建的paintComponent对象上绘图

  9. 9

    在另一个函数中声明的画布上绘图

  10. 10

    在另一个窗口小部件包含的窗口小部件中绘图

  11. 11

    用于将一个范围列表缩放到另一个范围的算法

  12. 12

    将一个矩阵列表重新缩放为另一个

  13. 13

    缩放后,一个元素的位置被更改并被另一个元素隐藏

  14. 14

    使用另一个数据框缩放数据框中的变量

  15. 15

    将ggplot的输出嵌入到另一个绘图中

  16. 16

    Python / Tkinter-从另一个类和绘图图中调用变量的问题

  17. 17

    如何基于另一个数据框创建绘图新的数据框

  18. 18

    将ggplot的输出嵌入到另一个绘图中

  19. 19

    D3:是否可以缩放+平移一个轴而仅平移另一个轴?

  20. 20

    使一个元素居中于另一个响应元素并根据屏幕尺寸缩放的元素上方?

  21. 21

    相对于另一个元素缩放元素

  22. 22

    动态缩放堆叠在另一个物体上的物体

  23. 23

    如何缩放旋转的矩形以始终适合另一个矩形

  24. 24

    如何缩放旋转的矩形以始终适合另一个矩形

  25. 25

    在具有溢出滚动和居中的另一个div内缩放div

  26. 26

    R - 按另一个变量缩放/乘以 geom_bar 计数

  27. 27

    当 svg 引用另一个时如何缩放 SVG

  28. 28

    使用javascript在一个元素上设置高度以匹配另一个元素

  29. 29

    如何在iTextSharp中创建“动作”以在页面上以“适合页面”缩放打开另一个PDF?

热门标签

归档