R Shiny quantmod zoomChart和点的固定着色

时间:2017-02-16 10:04:09

标签: r slider shiny quantmod

在显示shiny和彩色线条时,我遇到有关chart_Series和滑块使用的问题。当我从右侧使用滑块时,颜色被适当选择(主要是红点)。当我使用左侧的滑块(例如,查看最新数据)时,未正确选择颜色(应为绿色)。我寻求帮助,我感谢任何建议!

require(quantmod)
require(shiny)
getSymbols("YHOO")
data <- YHOO
data <- data[1:100,]

col_function <- rep("red",50)
col_function <- c(col_function,  rep("green",50))


plot <- {

  date_range <- index(data)


  if (interactive()) {
    options(device.ask.default = FALSE)
   # Define UI
    ui <- fluidPage(
      titlePanel("Time:"),
      sidebarLayout(
        # Sidebar with a slider input
        wellPanel(
          tags$style(type="text/css", '#leftSlide { width:200px;    float:left;}'),
          id = "leftSlide",
          sliderInput("Range", "Choose Date Range:",
                      min = first(date_range), max = last(date_range), value = c(first(date_range),last(date_range)))
        ),

        mainPanel(
          plotOutput("Plot",  width = "150%", height = "500px")
        )
      )
    )

    # Server logic
    server <- function(input, output) {
      output$range <- renderPrint({ input$slider2 })
      output$Plot <- renderPlot({

        x_ti2 <- xts(rep(1, NROW(data)), order.by = index(data))
        x_ti2[1, ] <- 0.5 

      chart_Series(data)
      add_TA(x_ti2, col = col_function, pch = 9, type = 'p', cex = .7)
# Another way below, but the color function is still not working
      #chart_Series(data["2017"], TA = 'add_TA(x_ti, col = col_function, pch = 15, type = "p", cex = .7); add_TA(x_ti2, col = "orange", pch = 9, type = "p", cex = .7)')

      zoom_Chart(paste(input$Range, collapse = "::"))
      })

      observe({
        print(input$Range)
      })
    }

    shinyApp(ui, server)
  }
}  

plot 

1 个答案:

答案 0 :(得分:0)

所以,我找到了解决我自己问题的方法:

据我所知,shiny将编辑数据,但不会编辑着色向量(在各自非常合乎逻辑的......中)。因此,您还必须告诉闪亮以更新着色范围。

首先,我将着色结果转换为xps对象。然后我将x_ti2变量添加到原始数据矩阵,并为col_function定义了一个带有输入$ range的变量。变量需要部分全局环境(闪亮可以使用它)。如果有人有类似的问题,我希望这会解决一些问题。