使用 R 中 DT 包为表格填充渐变颜色的笔记

您所在的位置:网站首页 ai如何修改渐变色颜色不变 使用 R 中 DT 包为表格填充渐变颜色的笔记

使用 R 中 DT 包为表格填充渐变颜色的笔记

2024-03-16 00:01| 来源: 网络整理| 查看: 265

主要是从 DT 包子和 reactable 包子的官网翻了翻生成渐变颜色的案例,然后叨叨了一篇笔记。

DT 包中有一些函数可以针对表格中的各列数据做格式化处理,官网有例子https://rstudio.github.io/DT/functions.html、https://rstudio.github.io/DT/010-style.html。比如formatString(table, columns, prefix = "", suffix = "", rows = NULL)可以在单列数据的前面或后面直接加上或者贴上固定内容;formatPercentage()可以将数据转换为百分比格式;formatStyle()可以填充表格颜色(不止)。

依照惯例,编造一份数据,便于以后复现:

library(DT) set.seed(2022) data seq(.05, .95, .1) [1] 0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95 >seq(255, 51, length.out = length(brks) + 1) [1] 255.0 234.6 214.2 193.8 173.4 153.0 132.6 112.2 91.8 71.4 51.0

像这种直接改变 RGB 值而使填充表格的颜色从白色渐变为另一种颜色的方式是很简便的,比如下图改成由白色渐变为绿色,由于白色的 RGB 值是255,255,255,绿色的RGB值是0,255,0,相当于保持G值不变,R/B值逐渐减小。

#改成由白到绿 clrs % {paste0("rgb(" , . , ",255,", ., ")")} datatable(data, rownames = FALSE, options = list(order = list(2, 'asc'))) |> formatStyle('value2', backgroundColor = styleInterval(brks, clrs))

同理,也可以改成由红色渐变为绿色。由于红色的 RGB 值是255,0,0,绿色的 RGB 值是0,255,0,由红渐变为绿即 R 值逐渐减小、G值逐渐增大、B值不变。

#改成由红到绿 clrs % {paste0("rgb(" , 255 - . , ",", ., ", 0)")} datatable(data, rownames = FALSE, options = list(order = list(2, 'asc'))) |> formatStyle('value2', backgroundColor = styleInterval(brks, clrs))

这种方法有一个弊端,普通人(比如我)对红黄蓝三原色如何配比组合成其他颜色的效果是很陌生的,这样弄出来的颜色总感觉有点扎眼睛。

借用colorRamp函数 🔗

一般情况下,若是觉得自己瞎选的颜色太难看的话,可以参照一些现成的例子比如Women’s World Cup 。此案例中使用了一个专门用来生成渐变颜色的函数colorRamp(colors, bias = 1, space = c("rgb", "Lab"), interpolate = c("linear", "spline"), alpha = FALSE)(ps.这个函数我看着还是有点懵,只知道输入什么、输出什么,中间原理没明白,此次浅尝辄止)。

先瞅瞅原案例中由红变绿、由白变绿的颜色长什么样子。

library(echarts4r) data.frame(type = c('A', 'B', 'C'), value = rep(1, 3)) |> e_charts(type) |> e_pie(value, color = c("#ff2700", "#f8fcf8", "#44ab43")) data.frame(type = c('A', 'B', 'C', 'D', 'E'), value = rep(1, 5)) |> e_charts(type) |> e_pie(value, color = c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"))

接着搬来案例中生成渐变色的函数。

make_color_pal


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3