主題
R在使用 shiny 套件建立網頁應用程式時,如果希望表格可以產生互動視覺化效果,此時可以使用 reactable 套件[1]。詳細使用方法參考 reactable 官網[2]之說明。本篇文章範例3使用sparkline套件以繪製表格折線圖[3]。
使用觀念
1. reactable 套件使用五動式表格的函數為 reactable。2. 如果希望配合 shiny 套件使用,則使用以下二種情形:
- ui.R 使用 reactableOutput 函數
- server.R 使用 renderReactable 函數
- 定義欄名稱 Column definitions
- 排序 Sorting
- 排序與自定NA值 Sorting with NA
- 篩選 Filtering
- 搜尋 Search
- 分頁大小 Pagination
- 群組與匯總 Grouping and Aggregation
- 欄格式(貨幣,百分比,日期格式等) Column formatting
- 表格加上繪圖(直方圖,盒鬚圖,線圖等) Columns plot
- 佈景主題 Theme
關鍵字
#shiny
#reactable
#reactableOutput
#renderReactable
#reactable
#reactableOutput
#renderReactable
R程式碼下載
R程式碼
# title : reactable package
# date : 2021.04.27
# author : Ming-Chang Lee
# email : alan9956@gmail.com
# RWEPA : http://rwepa.blogspot.tw/
# Encoding : UTF-8
# 範例1 - 表格應用
library(reactable)
reactable(CO2)
# 範例2 - shiny 加上表格應用
library(shiny)
library(reactable)
ui <- fluidPage(
titlePanel("reactable package example"),
reactableOutput("table")
)
server <- function(input, output, session) {
output$table <- renderReactable({
reactable(CO2)
})
}
shinyApp(ui, server)
# 範例3 - 表格加上折線圖 sparkline
library(dplyr) #進行 %>% 操作
library(sparkline) #繪製表格折線圖
library(reactable)
mydata <- iris %>%
group_by(Species) %>%
summarise(width = list(Petal.Width)) %>%
mutate(boxplot = NA, sparkline = NA)
reactable(mydata, columns = list(
width = colDef(cell = function(values) {
sparkline(values, type = "bar", chartRangeMin = 0, chartRangeMax = max(iris$Petal.Width))
}),
boxplot = colDef(cell = function(value, index) {
sparkline(mydata$width[[index]], type = "box")
}),
sparkline = colDef(cell = function(value, index) {
sparkline(mydata$width[[index]])
})
))
# end
參考資料
- R CRAN - reactable套件
https://cran.r-project.org/web/packages/reactable/index.html - reactable官網
https://glin.github.io/reactable - sparkline套件
https://cran.r-project.org/web/packages/sparkline/index.html
沒有留言:
張貼留言