带有交互式y的闪亮ggplot无法正确绘制

时间:2016-04-20 04:16:10

标签: r ggplot2 shiny interactive

我正在尝试创建一个界面,用户从下拉菜单中选择y变量,然后观察选择了观察结果的条形图。 但是,输出不正确,因为应用程序无法读取我的Y变量。每当我从下拉菜单中更改Y变量时,图表根本不会发生变化。

附上我的csv数据表的截图,以及运行以下代码时输出的错误输出图表:

enter image description here

enter image description here

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;。

1 个答案:

答案 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 ,感谢您的投入!