Рассмотрим следующее приложение:
library(shiny)
library(quantmod)
start <- as.Date("2013-01-01")
end <- as.Date("2016-10-01")
# Apple stock
getSymbols("AAPL", src = "yahoo", from = start, to = end)
apple <- AAPL$AAPL.Close
### Define UI for application
ui <- fluidPage(
# Sidebar panel
sidebarPanel(
selectInput("type",
label = "1. Select plot type",
choices = c("Line" = "geom_line",
"Dot" = "geom_point", "Boxplot" = "geom_boxplot"),
selected = 3
)
),
# Main Panel
mainPanel(
plotOutput("sp")
)
)
server <- function(input, output) {
output$sp <- renderPlot({
colm <- as.numeric(apple)
p <- ggplot() + aes(x = 1:length(colm), y = colm) + xlab(NULL)
p + match.fun(input$type)()
})
}
# Run the application
shinyApp(ui = ui, server = server)
Это приложение строит график относительно выбранного варианта. Однако я понятия не имею, как включить в код опцию для построения свечного графика, который мы можем построить с помощью кода.
>chartSeries(AAPL, type = c('candlestick'))
Однако я не уверен, как включить его в свое блестящее приложение. Блочная диаграмма, точка и линия были для меня логичны, потому что все они были аналогами. Знаете ли вы, как я могу добавить к нему график свечей?
Вы хотели включить график свечей, который quantmod
легко создает с помощью chartSeries
, в свое блестящее приложение? Или вы хотели использовать ggplot
для создания графика, похожего на график свечей, но с использованием функций из ggplot2
?
Первый вариант — я хочу добавить график свечей, созданный quantmod, в свое блестящее приложение.
Проще всего добавить «свечу» в качестве опции к вашему selectInput
, а затем проверить renderPlot
, что вы выбрали для ввода. Если это «свеча», нарисуйте график свечи; если нет, используйте input$type
, чтобы вести сюжет.
library(shiny)
library(quantmod)
start <- as.Date("2013-01-01")
end <- as.Date("2016-10-01")
# Apple stock
getSymbols("AAPL", src = "yahoo", from = start, to = end)
apple <- AAPL$AAPL.Close
### Define UI for application
ui <- fluidPage(
# Sidebar panel
sidebarPanel(
selectInput("type",
label = "1. Select plot type",
choices = c("Line" = "geom_line",
"Dot" = "geom_point",
"Boxplot" = "geom_boxplot",
"Candlestick" = "candlestick"),
selected = 3
)
),
# Main Panel
mainPanel(
plotOutput("sp")
)
)
server <- function(input, output) {
output$sp <- renderPlot({
if (input$type == "candlestick") {
chartSeries(AAPL, type = c('candlestick'))
} else {
colm <- as.numeric(apple)
p <- ggplot() + aes(x = 1:length(colm), y = colm) + xlab(NULL)
p + match.fun(input$type)()
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
Любые комментарии о неясности моего вопроса будут оценены.