2020年9月21日 星期一

24_R互動式網頁_Shiny Plot

 上一篇中將資料集以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在逗號的右邊,意思為選擇欄相對在逗號的左邊為選擇行,而詳細的部分可參考本篇的第一篇。

最後的成果如下圖



若你的欄位是字串會出現錯誤畫面,不過這不影響我們金要講的重點!

下一篇見!





沒有留言:

張貼留言

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...