我有一个数据集,其中包含超过30年的所有50个州的房屋价值。列包括State,Year,Value等。我正在尝试创建一个交互式Shiny应用程序,用户可以选择某些状态,这样它们就是图中唯一显示的状态。我已经成功创建了所有状态的图,其中Year位于x轴上,Value位于y轴上,由State着色,并且还成功地对数据集进行了子集,因此只有一个状态图。
我是Shiny的新手,除了输入复选框功能之外还有其他问题。有什么明显的东西我不见了吗?
ui <- fluidPage(
checkboxGroupInput(inputId = "state", label = "States", choices = levels(AllData2$STATE),
plotOutput(outputId = "hist")))
server <- function(input, output) {
output$hist <- renderPlot({
plot(data = subset(AllData2, AllData2 == input$state), mapping = aes(x = Date, y = HomeValue,
color = STATE) + geom_line(size=2, alpha=0.8) +
scale_y_continuous(breaks = seq(0, 1000000, 50000)) +
scale_x_continuous(breaks = seq(1975, 2020, 5)) +
ylab("Value in Dollars") + xlab("Year"))
})
}
shinyApp(ui = ui, server = server)
除了复选框选项外,我的Shiny App中没有输出。感谢您的任何帮助。
答案 0 :(得分:1)
代码中只有语法错误。他们中的许多人:
plotOutput()
包含在复选框组中,请将其放在其外面。ggplot()
代替plot()
plot()
内如果您使用ggplot()
,则语法为:ggplot(data=AllData,mapping=aes())+geom_line()+scale_y_continuous()+scale_x_continuous()+labs(x="This is X label",y="This is ylab",color="This is the color legend label")
修复这些问题后,您的代码将正常运行 如果您想要即时结果,只需复制粘贴:
library(shiny)
library(ggplot2)
library(dplyr)
ui <- fluidPage(
column(12,checkboxGroupInput(inputId = "state", label = "States", choices = c(1,2,3,4,5))),
column(12,plotOutput(outputId = "hist")))
server <- function(input, output) {
output$hist <- renderPlot({
ggplot(data = subset(AllData2, AllData2$STATE %in% input$state), mapping = aes(x = Date, y = HomeValue,
color = STATE)) + geom_line(size=2, alpha=0.8) +
scale_y_continuous(breaks = seq(0, 1000000, 50000)) +
scale_x_continuous(breaks = seq(1975, 2020, 5)) +labs(x="Value in Dollars",y="Year")
})
}
shinyApp(ui = ui, server = server)