欢迎关注R语言数据分析指南❝

本节再来介绍一款交互式可视化数据表格的R包「reactablefmtr」,经过作者的不断开发现在功能更加的丰富多元化了,更多详细的内容请参考作者官方文档,内容案例非常丰富,喜欢的观众老爷欢迎收藏转发。

❞官方文档

2023-VIP购买方式❝

有需要学习个性化数据可视化分析的朋友,欢迎购买小编2023年度的会员文档;有需要的朋友欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买「初始价格99元」,微信发小编订单截图即可邀请进新的交流群,小编的文档为按年售卖,只包含当年度的「除系列课程外」的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询,「添加小编微信请备注,以提高沟通效率」

❞加载R包

library(tidyverse)
# install.packages("reactablefmtr")
library(reactablefmtr)
library(scico)

案例一 绘制条形表格构建数据

data <- data.frame(
  Group = c("Red Group 1","Red Group 2","Red Group 3","Red Group 4","Red Group 5",
            "Blue Group 1","Blue Group 2","Blue Group 3","Blue Group 4","Blue Group 5",
            "Green Group 1","Green Group 2","Green Group 3","Green Group 4","Green Group 5"),
  Pct1 = c(.27.82.44.68.78
           .74.66.33.23.20
           .50.55.40.70.60),
  Pct2 = c(.33.17.87.54.37,
           .84.72.61.48.77,
           .21.39.60.55.81)
)

reactable(data,pagination = FALSE,
  defaultColDef = colDef(cell = data_bars(data,number_fmt = scales::percent)))

# 使用reactable函数,创建一个可交互的表格
# 参数:
# - data: 表格数据
# - pagination: 是否分页,默认为False,即不分页
# - defaultColDef: 默认每一列的单元格显示为数据条,数字格式为百分比(scales::percent)

div中按钮水平居中_按钮居中_css 按钮居中

案例二 自定义图标

data <- MASS::Cars93[1:20, c("Make""Cylinders""MPG.city""Price")]
# 将Cylinders列的数据类型从factor转换为numeric
data$Cylinders <- as.numeric(as.character(data$Cylinders))

reactable(data,defaultColDef = colDef(align = "left", maxWidth = 200), 
  columns = list(
    Cylinders = colDef(cell = icon_assign(data)),
    MPG.city = colDef(cell = icon_assign(data, icon = "envira", fill_color = "forestgreen"))))

# 使用reactable函数,创建一个可交互的表格
# 默认每一列的对齐方式为左对齐,最大宽度为200
# 对于Cylinders列,单元格显示为图标
# 对于MPG.city列,单元格显示为图标,图标使用envira,颜色为forestgreen`

案例三 主题设置

# 创建一个名为data的数据框,并包含Name、Team、POS、GP、Off、Pass和Run等列
data <- data.frame(
  Name = c("Aaron Rodgers""Tom Brady""Josh Allen""Kirk Cousins""Russell Wilson""Kyler Murray""Lamar Jackson""Derek Carr""Patrick Mahomes""Justin Herbert"),
  Team = c("GB""TB""BUF""MIN""SEA""ARI""BAL""LV""KC""LAC"),
  POS = c("QB""QB""QB""QB""QB""QB""QB""QB""QB""QB"),
  GP = c(16161516161614161210),
  Off = c(90.189.978.885.188.883.480.171.987.880.4),
  Pass = c(83.480.171.987.880.490.189.978.885.188.8),
  Run = c(90.189.978.885.188.883.480.171.987.880.4))

# 创建颜色集合color_set
color_set <- c("#f7c844","#429460","#2e6d9e")

# 使用dplyr::left_join函数,将data数据框与teams_colors_logos数据框合并,按照Team列与team_abbr列进行合并
# 选取Name、POS、GP、team_logo_espn、Team、Off、Pass和Run列
# 使用reactable函数,创建一个可交互的表格
# 参数:
# - pagination: 是否分页,默认为False,即不分页
# - highlight: 是否高亮,默认为True,即高亮
# - striped: 是否使用条纹样式,默认为True,即使用条纹样式
# - defaultSorted: 默认排序列,为Off
# - defaultSortOrder: 默认排序顺序,为降序
# - theme: 使用pff主题
# 设置各列的显示参数,包括:最大宽度、单元格内容、对齐方式
# - Name列:最大宽度为280
# - POS列:最大宽度为70
# - GP列:最大宽度为70
# - team_logo_espn列:名称为"TEAM",最大宽度为100,单元格内容为图片,图片高度为20,宽度为20
# - Off列:对齐方式为居中,最大宽度为130,单元格内容为图标集,图标颜色为color_set
# - Pass列:对齐方式为居中,最大宽度为130,单元格内容为图标集,图标颜色为color_set
# - Run列:对齐方式为居中,最大宽度为130,单元格内容为图标集,图标颜色为color_set

data %>% 
  left_join(teams_colors_logos, by = c('Team' = 'team_abbr')) %>% 
  select(Name, POS, GP, team_logo_espn, Team, Off, Pass, Run, team_logo_espn) %>% 
  reactable(.,pagination = FALSE,
            highlight = TRUE,
            striped = TRUE,
            defaultSorted = "Off",
            defaultSortOrder = "desc",
            theme = pff(),
            defaultColDef = colDef(align = "left"),
            columns = list(
              Team = colDef(show = FALSE),
              team_color = colDef(show = FALSE),
              Name = colDef(maxWidth = 280),
              POS = colDef(maxWidth = 70),
              GP = colDef(maxWidth = 70),
              team_logo_espn = colDef(name = "TEAM", maxWidth = 100,
                                      cell = embed_img(., label = "Team", height = 20, width = 20)),
              Off = colDef(align = "center", maxWidth = 130,
              cell = icon_sets(.,colors = color_set, icons = "square")),
              Pass = colDef(align = "center", maxWidth = 130,
              cell = icon_sets(.,colors = color_set, icons = "square")),
              Run = colDef(align = "center", maxWidth = 130,
              cell = icon_sets(.,colors = color_set, icons = "square"))))

div中按钮水平居中_按钮居中_css 按钮居中

案例四 外部数据绘图

# 读取文件static_list.txt,并将其赋值给变量static_list
static_list <- readr::read_csv('static_list.txt'

# 使用scico函数,创建一个颜色比例尺pal1,参数30,色调为grayC
pal1 = scico::scico(30, palette = 'grayC')

数据清洗即绘图

static_list %>% 
  filter(Company != "Grand Total") %>%
  rename("Donated to Pride"="Pride?") %>%
  mutate(`Donated to Pride`=case_when(`Donated to Pride`==TRUE~"Yes"TRUE~"No"),
         `HRC Business Pledge`=case_when(`HRC Business Pledge`==TRUE~"Yes"TRUE~"No"),
         color_don = case_when(`Donated to Pride`=="Yes"~"#E1AF00"TRUE~"grey95"),
         color_hrc = case_when(`HRC Business Pledge`=="Yes"~"#E1AF00"TRUE~"grey95")) %>%
  reactable(defaultPageSize = 20,theme = fivethirtyeight(),
            defaultColDef = colDef(maxWidth = 150,format=colFormat(digits = 0)),
            columns=list(
              "Company"=colDef(maxWidth = 500),
              "Amount Contributed Across States" = colDef(format=colFormat(digits=2, prefix = "$ ", separators = TRUE),
                                                          style=color_scales(.,colors=pal1)),
              "Donated to Pride"=colDef(maxWidth = 100, align="center",
                                        cell=pill_buttons(.,color_ref = "color_don", opacity = 0.8)),
              "HRC Business Pledge"=colDef(maxWidth = 100, align="center",
                                           cell=pill_buttons(.,color_ref = "color_hrc", opacity = 0.8),
                                           style = list(borderRight = "1px solid #777")),
              color_don = colDef(show=FALSE),
              color_hrc = colDef(show=FALSE),
              "# of States Where Contributions Made"=colDef(align="center", cell=icon_assign(.,fill_color = "black")),
              "# of Politicians Contributed to"=colDef(align="center",cell=data_bars(.,force_outside = c(0,30)))
            ))

* 将处理后的数据输出为reactable表格
# 设置每页显示的数据量为20,主题为fivethirtyeight
# 设置默认列的最大宽度为150,数字格式保留0位小数
# 对各列进行额外的设置,包括:
# - Company列:最大宽度为500
# - Amount Contributed Across States列:
#   数字格式为带$前缀,千位分隔符,保留2位小数;颜色根据数据大小变化
# - Donated to Pride列:最大宽度为100,对齐方式为居中,单元格内容为丸形按钮,颜色根据color_don列的值变化,透明度为0.8
# - HRC Business Pledge列:最大宽度为100,对齐方式为居中,单元格内容为丸形按钮,颜色根据color_hrc列的值变化,透明度为0.8,右边有1像素的灰色边框
# - color_don和color_hrc列:不显示
# of States Where Contributions Made列:对齐方式为居中,单元格内容为图标,图标填充颜色为黑色
# of Politicians Contributed to列:对齐方式为居中,单元格内容为数据柱,柱的外部留白为0到30

div中按钮水平居中_按钮居中_css 按钮居中

本节介绍到此结束,可以看到通过「reactablefmtr」绘制的可交互式的R包非常适合各种会议汇报,更多详细内容请参考官方文档,喜欢的观众老爷欢迎分享转发。有学习个性化数据分析需求的朋友欢迎到小编「淘宝店铺 R语言数据分析指南」 购买小编2023年的VIP文档按钮居中按钮居中,已有不少朋友学以至用用到了论文当中,「加小编微信请备注信息及来意,无需要请勿扰」

❞小编微信