rshiny使用数据框绘制多个图形

时间:2017-01-17 17:56:03

标签: r ggplot2 shiny

我使用数据集构建了多个模型。在模型构建之后,我创建了错误并生成一个表作为休耕:

    Model1   Model2        Model3        Model4        Model5 TestData     time
1  636.854 578.691       623.360       638.430      691.028   5757 Oct 2015
2  566.647 627.868       562.838       590.698      563.355   512 Nov 2016
3  569.796 568.839       572.238       573.294      568.711   568 Dec 2015
4  567.660 561.306       576.710       573.889      564.812   534 Jan 2016
5  5653.244 514.589       575.057       522.061      514.812   434 Feb 2016
6  593.142 533.017       601.882       616.739      610.158   540 Mar 2016
7  594.040 596.805       607.002       609.083      619.537   526 Apr 2016

我想将它带入一个rshiny应用程序,其中y轴是每个模型的值,x轴是时间。基本上是包含所有线条的情节。

如果我要在ggplot中做:

plt <- ggplot(data=molted,
              aes(x=time, y=value, colour=variable, group=variable)) + geom_line(size=1.5) + 
  xlab("Date") + ylab("Values") + theme(axis.text.y  = element_text(size=20),
                                                           axis.title.y  = element_text(size=28),
                                                           axis.text.x  = element_text(size=20, angle=45, hjust=1),
                                                           axis.title.x  = element_text(size=26))

我从非常基本开始:

library(shiny)
shinyServer(
  function(input, output) {
  }
)
shinyUI(fluidPage(
  titlePanel(title="This is the first shiny app, hello"),
  sidebarLayout(position = "right",
    sidebarPanel(h3("this is the side bar panel"), h4("widget4"), h5("widget5")),
    mainPanel(h4(" this is the main panel, out is displayed here"),
              h5(" this is the output5"))
  )
))

1 个答案:

答案 0 :(得分:1)

您可以尝试使用以下内容开始(然后考虑将time转换为Date类并使用scale_x_date等。)

df <- read.table(text=' Model1   Model2        Model3        Model4        Model5 TestData     time
                 1  636.854 578.691       623.360       638.430      691.028   5757 Oct2015
                 2  566.647 627.868       562.838       590.698      563.355   512 Nov2016
                 3  569.796 568.839       572.238       573.294      568.711   568 Dec2015
                 4  567.660 561.306       576.710       573.889      564.812   534 Jan2016
                 5  5653.244 514.589       575.057       522.061      514.812   434 Feb2016
                 6  593.142 533.017       601.882       616.739      610.158   540 Mar2016
                 7  594.040 596.805       607.002       609.083      619.537   526 Apr2016', header=TRUE)
library(reshape2)
melted <- melt(df, id='time')

library(shiny)
server <- shinyServer(
  function(input, output) {
    output$plt<-renderPlot({
      ggplot(data=molted,
             aes(x=time, y=value, colour=variable, group=variable)) + geom_line(size=1.5) + 
              xlab("Date") + ylab("Values") + theme(axis.text.y  = element_text(size=20),
                                              axis.title.y  = element_text(size=28),
                                              axis.text.x  = element_text(size=20, angle=45, hjust=1),
                                              axis.title.x  = element_text(size=26))},height = 400,width = 600)
  }
)
ui <- shinyUI(fluidPage(
  titlePanel(title="This is the first shiny app, hello"),
  sidebarLayout(position = "right",
                sidebarPanel(h3("this is the side bar panel"), h4("widget4"), h5("widget5")),
                mainPanel(plotOutput("plt"))
  )
))
shinyApp(ui = ui, server = server)

enter image description here