R语言formattable包如何为yes/no字段设置条件颜色进度条
问题原因
color_bar 本身是针对数值型字段封装的格式化器,会根据数值占列最大值的比例计算进度条长度,且不能直接作为参数传入style()中使用,你之前的写法不符合formattable的参数规则,因此不生效。
解决方案
我们可以自定义格式化器,手动实现条件色值的进度条效果,完整可运行代码如下:
library(formattable) # 初始化测试数据 df = data.frame(YesNo = c("yes","no","yes","no"), Numbers = c(4, 5, 10, 10)) rownames(df) = c("Test1","Test2","Test3","Test4") # 自定义YesNo列的条件进度条格式化器 yesno_bar_formatter <- formatter( "span", style = function(x) { # 配置进度条颜色:yes对应绿色,no对应红色 bar_color <- ifelse(x == "yes", "lightgreen", "lightcoral") # 配置进度条样式,此处设置为占满单元格宽度,可自行调整比例 style( display = "block", padding = "2px 4px", `border-radius` = "3px", `background-color` = bar_color, width = "100%" ) } ) # 渲染表格 formattable(df, list( YesNo = yesno_bar_formatter ))
如果你需要调整进度条的长度,只需要修改width参数的取值即可,比如设置为"60%"就能让进度条只占单元格60%的宽度。
内容的提问来源于stack exchange,提问作者Dreammmm
相关产品推荐
相关产品推荐

