【问题标题】:How to change a curve in shiny in R如何在R中改变闪亮的曲线
【发布时间】:2021-01-03 17:00:18
【问题描述】:

我想更改数字以使情节具有动画效果。这个我试过了

library(shiny)
library(ggplot2)
ui <- fluidPage(
  titlePanel("Equation"),
  sidebarLayout(
    sidebarPanel(
      sliderInput(inputId = "values",
                  label = "number of values:",
                  min = -5,
                  max = 5,
                  value = 5)
    ),
    mainPanel(
      plotOutput(outputId = "distPlot")
    )
  )
)
server <- function(input, output) {
  output$distPlot <- renderPlot({
    k <- function(x,c) { 
      p <- (-x^3+c)
      return(p)
    } 
    gg <- function(c_val) {
      ggplot(data.frame(x = c(-50, 50)), aes(x)) +
        stat_function(fun = k, args = list(c=c_val), aes(colour = "temp"))}
    gg(-5)
  })
}
shinyApp(ui,server)

我可以看到情节和侧边栏,但是当我移动侧边栏时,它并没有改变。我努力改变剧情。我知道它可能不会有显着变化,但对于这些代码的目的来说并不重要。

我想知道我们是否可以使用闪亮来做到这一点。

【问题讨论】:

  • 您是否尝试过在情节代码中的某处使用input$valuesggplot2 不会自发查找您尚未声明/分配的变量。
  • 另外,当你使用input$values 时,你得到的并不是真正的动画。如果你想这样做,你将不得不查看gganimate 包。但是,当您说动画时,您的意思可能有所不同。
  • 是的,仅像这样(在 renderPlot 内部),但是绘图消失了 df % str_split(",", simple = TRUE) %>% str_trim() . 通过动画,我只想使用不同的值来获得不同的情节。
  • @user330 当然我可以,但老实说,无论您在gg(c_val) 中输入什么值,您的情节都不会真正改变。只有“水平”变化,这意味着值变大或变小,但情节本身并没有真正的变化。更重要的是,只有当c_val 明显变大时,您才会看到电平变化。例如。试试gg(5)gg(50000)。您不会在您的应用中看到这些变化,因为滑块仅限于 -5 和 5。
  • @SavedByJESUS 我已经更新了,所以如果可能的话,您可能希望提供帮助?

标签: r ggplot2 shiny


【解决方案1】:

您需要为您的 ggplot 提供输入:将 gg(-5) 替换为 gg(input$values)。正如评论中所说,由于您的滑块只是更改曲线的偏移量,因此您需要适当的比例来查看更改。我将其设置为 -5:5:

library(shiny)
library(ggplot2)
ui <- fluidPage(
  titlePanel("Equation"),
  sidebarLayout(
    sidebarPanel(
      sliderInput(inputId = "values",
                  label = "number of values:",
                  min = -5,
                  max = 5,
                  value = 5)
    ),
    mainPanel(
      plotOutput(outputId = "distPlot")
    )
  )
)
server <- function(input, output) {
  output$distPlot <- renderPlot({
    k <- function(x,c) { 
      p <- (-x^3+c)
      return(p)
    } 
    gg <- function(c_val) {
      ggplot(data.frame(x = c(-5, 5)), aes(x)) +
        stat_function(fun = k, args = list(c=c_val), aes(colour = "temp"))}
    gg(input$values)
  })
}
shinyApp(ui,server)

【讨论】:

    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2017-06-30
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多