在R語言中也可以製作互動式網頁,使用的是shiny
這個套件,優點是可以簡單、快速建立一個網頁,對不會寫前端的人來說,是一個很方便的選擇,缺點則是效能較不好,且不符合前後端分離的架構。
在shiny
中可以把整個服務分成兩塊,ui
和server
,最後再用shinyApp()
呼叫來建立。
ui
主要是用來設計網頁上的呈現,server
主要是接收ui
資訊後進行指令執行,
以下使用iris
資料做舉例:
製作一個網頁呈現不同品種的鳶尾花瓣長度,結果如下
# 載入套件
library(shiny)
library(ggplot2)
data("iris")
ui = fluidPage(
# 建立下拉選單及選項
selectInput("Species", "Choose Species:",
list(`Species` = list("setosa", "versicolor", "virginica")),
multiple = TRUE
),
mainPanel(plotOutput("plot2"))
)
server = function(input, output) {
data <- reactive({
# 帶入使用者在畫面上的選擇來過濾資料
test <- iris[iris$Species %in% input$Species,]
test
})
output$plot2<-renderPlot({
# 根據上方資料繪製散佈圖
ggplot(data = data()) +
aes(x = Petal.Length, y = Petal.Width) +
geom_point(aes(color = Species))
})
}
shinyApp(ui, server)