如何为gtExtras中的Sparkline按增减情况设置整体颜色?
解决方案
要实现根据数值增减为整条Sparkline设置颜色,可按以下步骤操作:
- 提前计算每行的数值变化方向,生成对应的颜色映射列
- 在
gt_plt_sparkline中指定线条颜色为该映射列
完整代码示例:
library(gt) library(gtExtras) library(dplyr) dd <- data.frame( where = c("where1", "where2", "where3", "where4"), "year_2014" = c(30, 60, 20, 10), "year_2022" = c(10, 50, 30, 20)) # 计算变化差值并设置线条颜色 dd <- dd |> mutate( change_diff = year_2022 - year_2014, line_color = case_when( change_diff > 0 ~ "red", # 数值上升时线条设为红色 change_diff < 0 ~ "green", # 数值下降时线条设为绿色 TRUE ~ "gray" # 无变化时设为灰色(可选) ), change = list(c(year_2014, year_2022)) ) # 生成带颜色sparkline的表格 dd |> gt() |> gt_plt_sparkline( column = change, label = FALSE, color = line_color, # 绑定线条颜色到映射列 point_color = line_color # 可选:让端点颜色与线条一致,取消默认端点异色 ) |> cols_hide(columns = c(change_diff, line_color)) # 隐藏辅助计算列
关键说明:
change_diff列用来判断2022年相对2014年的数值变化方向line_color列通过case_when完成"增减方向→颜色"的映射gt_plt_sparkline的color参数支持传入列名,实现每行sparkline的个性化颜色设置- 如果希望保留默认的端点突出效果,可以删除
point_color = line_color这一参数
内容的提问来源于stack exchange,提问作者B.M Njuguna
相关产品推荐
相关产品推荐

