我正在尝试创建一个界面,用户从下拉菜单中选择y变量,然后观察选择了观察结果的条形图。 但是,输出不正确,因为应用程序无法读取我的Y变量。每当我从下拉菜单中更改Y变量时,图表根本不会发生变化。
附上我的csv数据表的截图,以及运行以下代码时输出的错误输出图表:
shinyUI(fluidPage(
titlePanel("Volvo Sales Analysis"),
fluidRow(
column(4,selectInput("Year",
label = "Choose a year",
choices = as.list(c("Y2004","Y2005","Y2006","Y2007","Y2008","Y2009","Y2010","Y2011","Y2012",
"Y2013", "Y2014", "Y2015")),selected = "Y2015")),
column(12,plotOutput("brandplot"))
)
))
shinyServer(
function(input, output) {
brand_sales<-read.csv("C:/Shiny R/Sales by brand.csv", header=TRUE,check.names=FALSE)
output$brandplot= renderPlot({
ggplot(brand_sales,aes(x=brand_sales$Brands,y=input$Year,fill=Brands))+xlab("Brands")+ylab("Sales Volume")+geom_bar(stat="identity")
})
})
在&#34; as.list(c(&#34; Y2004&#34;,&#34; Y2005&#34; ....)&#34;功能我没有使用&#34; colnames(brand_sales)&#34;因为如果我这样做,列名称&#34; Brand&#34;也将显示在下拉菜单中,我不想要那个。我只希望用户选择一个2004年至2015年之间的一年。
我也试过&#34; aes_string()&#34;在引用ggplot中的列时。但输出页面会生成错误&#34; object&#39; Brands&#39;找不到&#34;。
答案 0 :(得分:0)
感谢 aosmith 的回答,我能够解决问题并让图表正确显示。事实证明,ggplot的正确代码应为:
“ggplot(brand_sales,aes_string(x =”Brands“,y = input $ Year,fill =”Brands“))+ xlab(”Brands“)+ ylab(”Sales Volume“)+ geom_bar(stat =”同一性 “)”
关键是用引号括起X和Fill变量,因为这是在aes_string中命名列的正确方法。
再次感谢 aosmith 和 MrFlink ,感谢您的投入!