用情节 Shiny R 制作累积图形

Posted

技术标签:

【中文标题】用情节 Shiny R 制作累积图形【英文标题】:Make acumalative graphics whit plotly Shiny R 【发布时间】:2021-12-19 18:55:31 【问题描述】:

我必须设计一个图表,在使用 plotly 将变量添加到 Shiny R 时累积变量。

例如,如果我使用选择输入绘制变量 x 相对于日期 t 的图表,我添加变量并且它位于变量 x 的右侧,用分隔符指示它是变量 y因此选择了尽可能多的变量。

这是我的代码:

library(shiny)
library(plotly)
library(dplyr)


set.seed(123)
df <- data.frame(x = seq.Date(as.Date("2000/1/1"), by = "month", length.out = 100),
                 cat = sample(c("m1","m2","m3"),100, replace = TRUE),
                 a = cumsum(rnorm(100)),
                 b = rnorm(100),
                 c = rnorm(100),
                 d = rnorm(100))

ui <- fluidPage(
  selectInput("x","Variable",names(df)[-1],NULL,TRUE),
  selectInput("y", "category", unique(df$cat), NULL, TRUE),
  numericInput("ls","limite superior",NULL,-100,100),
  numericInput("li","limite superior",NULL,-100,100),
  plotlyOutput("plot1")
  
)

server <- function(input, output, session)  
 
    
  output$plot1 <- renderPlotly(    
    req(input$y, input$x)    
    df <- df%>%
      filter(cat %in% input$y)%>%
      select(one_of("x",input$x)) 
    
    estado <- ifelse(df[[2]]>input$ls,"red", 
                     ifelse(df[[2]]<input$ls & df[[2]]>input$li,
                            "orange","green"))
    
    df$estado <- estado 
    
    p <- plot_ly(df,
                 x = ~x,
                 y = ~df[[2]],
                 type = "scatter",
                 mode = "lines") 
    ## Makers
    
    p <- p %>%
      add_trace(x = ~x,
                y= df[[2]],
                marker = list(color = ~estado, size = 20, symbol = "square"),
                showlegend = FALSE)
      
      
      
    ## Lengends and labels
    
    
    p <- p %>%
      layout(legend = list(orientation = 'h'))%>%
      layout(title = paste('Comportamiento de calidad de agua residual', input$estacion, sep=' '), 
             plot_bgcolor = "#e5ecf6", 
             xaxis = list(title = 'Fecha'), 
             yaxis = list(title = paste(input$x,"mg/l", sep=" ")))
    
    print(p)
      
    
  )
    
    
  


shinyApp(ui, server)

我需要在添加变量 a、b、c、d 时,在已经存在的变量之后制作图形,使其看起来像这样:

【问题讨论】:

您可以使用 plotly 代理,阅读此article 17.3.1。这需要你还需要学习plotly js functions。可以在此处找到使用代理的示例:***.com/questions/50620360/… 也许我没有让自己理解得很好,但我已经找到了解决方案,但是谢谢! 【参考方案1】:

使用子图并执行功能。

df %>%
 group_by(category) %>%
 do(p = plot_ly(...) %>% (plot_features...)) %>%
 subplot(sharex= FALSE,sharey=TRUE, nrow=1, margin = 0.0001)

情节特征是指情节的所有细节(标记、线条、颜色等)

【讨论】:

以上是关于用情节 Shiny R 制作累积图形的主要内容,如果未能解决你的问题,请参考以下文章

R 中 Shiny 应用程序中的图形布局;使布局更简洁

R Shiny:制作可折叠的 tabsetPanel

R Shiny:使用来自反应函数的数据制作反应图

在 R 中用 Shiny 绘制散点图;情节没有更新,也没有完全互动

Shiny R:情节显示不佳

R Shiny:PlotOutput 未在 Shiny 应用程序中更新