闪亮的滑块输入从csv文件中读取行

时间:2017-09-24 18:16:42

标签: r csv shiny slider

我是R和Shiny包的新手。我有一个4行col和600行的csv文件,我试图用ggplot2绘制一些图形。

我的ui和服务器代码如下:

 dt<-read.csv('file.csv')
server <- function(input, output) {
  output$aPlot <- renderPlot({
    ggplot(data = dt, aes(x = Col1, y = Col2, group = 'Col3', color = 'Col4')) +  geom_point()
  })
}
ui <- fluidPage(sidebarLayout(
sidebarPanel(
  sliderInput("Obs", "Log FC", min = 1, max = 600, value = 100)
),
mainPanel(plotOutput("aPlot"))  ))

在这里,我可以获得ggplot输出,但我不知道如何使用此滑块输入来控制要读取的行数,即我希望此"Obs"输入来定义大小要在图表中使用Col1

2 个答案:

答案 0 :(得分:1)

尝试这样的事情,这里的例子是mtcars数据集:

library(shiny)
library(ggplot2)

dt <- mtcars[,1:4]

ui <- fluidPage(
  sidebarPanel(
    sliderInput("Obs", "Log FC", min = 1, max = nrow(dt), value = nrow(dt)-10)
  ),
  mainPanel(plotOutput("aPlot"))
) 

server <- function(input, output) {

  mydata <- reactive({
    dt[1:as.numeric(input$Obs),]
  })

  output$aPlot <- renderPlot({
    test <- mydata()
    ggplot(data = test, aes(x = test[,1], y = test[,2], group = names(test)[3], color = names(test)[4])) +  geom_point()
  })
}

shinyApp(ui = ui, server = server)

答案 1 :(得分:-1)

将您的服务器更改为:

server <- function(input, output) {
  observe({
   dt_plot <- dt[1:input$Obs,] 

  output$aPlot <- renderPlot({
ggplot(data = dt_plot, aes(x = Col1, y = Col2, group = 'Col3', color = 'Col4')) +  geom_point()
  })
 }) 
}