Shiny 初探
🌟 Shiny 是什麼?
Shiny 是 R 語言的套件之一,由 RStudio 開發,它讓你能夠用 純 R 語法 製作出互動式的網頁應用程式。
適合用來製作 資料分析儀表板(dashboard)、互動表單、即時圖表、統計工具 等應用。
💡 為什麼用 Shiny?
優點 | 說明 | |||
✅ 不用學 JavaScript 或 HTML | 用 R 就能打造前端與後端互動系統 | |||
✅ 與資料分析無縫整合 | 可直接讀取 R 內的資料框、ggplot、模型等 | |||
✅ 支援多種輸出格式 | 可以產生 PDF、Word、Excel 等報表 | |||
✅ 可結合 MySQL、Google Sheets | 可以當作資料庫操作工具或表單系統 | |||
✅ 可本機執行或部署到雲端 | 部署到 shinyapps.io 或自行架設 Shiny Server | |||
🖥️ 基本架構:Shiny 有三個部分
# 1. UI:使用者介面
ui <- fluidPage( titlePanel("Hello Shiny"), sliderInput("num", "請選一個數字", min = 1, max = 100, value = 50), plotOutput("histPlot") )
# 2. Server:邏輯處理
server <- function(input, output, session) { output$histPlot <- renderPlot({ hist(rnorm(input$num)) # 使用滑桿控制亂數數量 }) }
# 3. 啟動 App shinyApp(ui, server)
執行後會開啟一個互動網頁,有滑桿與直方圖。
🔧 常見元件(UI)
元件 | 用途 | |||
textInput() |
輸入文字 | |||
numericInput() |
輸入數字 | |||
selectInput() |
下拉選單 | |||
checkboxInput() |
勾選框 | |||
radioButtons() |
單選選項 | |||
fileInput() |
上傳檔案 | |||
dataTableOutput() |
顯示可互動的表格 | |||
📦 延伸功能
套件 | 用途 | |||
shinydashboard |
製作像網站的儀表板頁面 | |||
DT |
顯示可互動篩選的表格 | |||
shinyWidgets |
美化介面、進階輸入元件 | |||
shinyjs |
增強前端互動(顯示/隱藏) | |||
shinyFiles |
讓使用者選取本機檔案 | |||
📦 Shiny 可以做什麼?
📊 統計分析工具:互動式描述統計、交叉分析、模型預測
📝 表單系統:問卷填寫、加班申請、請假系統
📈 動態報表:根據資料輸入即時產出圖表與分析結果
👥 多角色介面:社工、督導、主管使用不同功能
💾 結合資料庫:可與 MySQL、Google Sheets、SQLite 整合