我正在尝试使用新的RStudio功能Shiny来创建一个Web应用程序,它可以绘制不同的股票。我创建了以下示例。
我想选择数据集StockMarket然后选择例如DAX,然后最终应该出现该图。
现在,如果您运行此代码,则会立即显示该图
你能帮我吗?
ui.R:
library(shiny)
library(ggplot2)
shinyUI(pageWithSidebar(
# Application title
headerPanel("Plot1"),
sidebarPanel(
selectInput("dataset", "Dataset", list("mtcars"="cars", "StockMarket"="stocks")),
conditionalPanel(
condition = "input.dataset=='stocks'",
uiOutput("data")
)),
mainPanel(
plotOutput('plotstock')) ))
server.R:
library(shiny)
require(ggplot2)
library(datasets)
shinyServer(function(input, output) {
output$data<- reactiveUI(function() {
selectInput("data", "Choose Dataset", colnames(EuStockMarkets))
})
output$plotstock <- reactivePlot(function() {
data<-data.frame(EuStockMarkets)
p<- ggplot(data,aes(x=seq(1,length(data[,1])),y=DAX))+geom_line(size=1)+ylab("")+opts(title="Time Series")
print(p)
})})
答案 0 :(得分:20)
在reactivePlot
功能中,您可以执行类似
if (is.null(input$data))
return(NULL)
我还会在数据集选项("(Choose one)"=""
)中添加一个空白条目,并且还有
if (!nzchar(input$dataset))
return(NULL)
reactivePlot
中的。
答案 1 :(得分:0)
还要确保检查空字符串
if (!nzchar(input$dataset) || input$dataset=='')
return(NULL)