2017-09-24 69 views
0

我是R和Shiny包的新手。我有一個csv文件,4 col和600行,我想用ggplot2繪製一些圖。閃亮的滑塊輸入從csv文件讀取行

我的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的大小。

回答

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) 
+0

非常感謝,它的工作完美。如果我想在這個應用程序中添加另一個滑塊,我必須做什麼..!?我的意思是一個data.frame內部反應存儲滑塊輸入.. –

+0

我不清楚你想如何添加一個滑塊。請提供另一個問題的詳細例子,並關閉/接受這個問題 –

-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() 
    }) 
}) 
} 
+1

通常它不是一個好主意,做了很多的計算之內'observe' –

+0

正確,'反應'更好 –