上一篇中將資料集以renderTable()涵式以往頁方式呈現,並以動態的方式進行選擇,讓使用者能夠清楚瞭該資料集的結構,而今天我們將了解繪圖的部分,一樣我們還是使用鐵達尼的資料集,並以上一篇的程式碼為基礎進行程式碼的撰寫
首先我們在ui.R撰寫,程式如下
library(shiny)
ui <- fluidPage(
titlePanel("This is a demo"),
sidebarLayout(
sidebarPanel(
selectInput("inState","請依鐵達尼資料集選擇欄位",choices = names(titanic))
),
mainPanel(
plotOutput("titanicData")
)
)
)
上圖程式碼跟上一篇差不多,不一樣,choices = names(titanic),告訴Shiny套件鐵達尼資料集內所有的變數都可進行選擇;在上一篇我們要呈現資料集的表格,而本次要呈現圖形所以採用 plotOutput("titanicData")涵式告知套件,接下進入到server.R檔案撰寫,程式如下
library(shiny)
server <- shinyServer(function(input,output){
output$titanicData <- renderPlot({
hist(titanic[,input$inState])
#stateFilter <- subset(titanic,titanic$Pclass == input$inState)
})
})
我們把上一篇的語法變為註解,我們可以發現兩者不同之處,告訴套件我們要繪圖renderPlot(),而圖怎麼多我們要要會甚麼圖ㄋ?所以告訴套件繪製直方圖hist(),那直方圖的資料你需要以哪個值為主input$inState,而這個就是在ui.R檔案所設的變數名稱,而我們可以注意input$inState在逗號的右邊,意思為選擇欄相對在逗號的左邊為選擇行,而詳細的部分可參考本篇的第一篇。
最後的成果如下圖
若你的欄位是字串會出現錯誤畫面,不過這不影響我們要講的重點!
下一篇見!