R语言formattable包color_bar反向长度、隐去数值、表头居中设置问题
formattable常见问题解决方案
反转color_bar色条长度
你可以通过自定义color_bar的fun参数实现色条长度反转,该参数用来控制数值到色条宽度的映射逻辑,默认是数值越大宽度越高,修改映射规则即可实现排名越靠前色条越长:
library(formattable) df <- data.frame(Ranking = c(1, 2, 3, 4, 5, 8, 10)) # 反转色条核心逻辑:将数值映射为 (最大值-当前值+最小值)/最大值 formattable(df, list( Ranking = color_bar( "red", fun = function(x) { (max(x, na.rm = TRUE) - x + min(x, na.rm = TRUE)) / max(x, na.rm = TRUE) } ) ))
隐藏色条内的数值
如果不需要在色条上显示具体数值,自定义formatter不返回文本内容即可:
formattable(df, list( Ranking = formatter( "span", style = function(x) { style( display = "block", "background-color" = "red", width = percent((max(x, na.rm = TRUE) - x + min(x, na.rm = TRUE)) / max(x, na.rm = TRUE)) ) }, function(x) "" # 此处返回空字符串,不显示数值 ) ))
表头居中设置
默认的align参数仅控制表格内容单元格的对齐方式,表头需要额外添加样式控制:
# 完整代码:同时实现反转色条、隐藏数值、表头和内容全部居中 formattable( df, align = "c", # 内容单元格居中 list( Ranking = formatter( "span", style = function(x) { style( display = "block", "background-color" = "red", width = percent((max(x, na.rm = TRUE) - x + min(x, na.rm = TRUE)) / max(x, na.rm = TRUE)) ) }, function(x) "" ) ), # 自定义表头样式实现居中 .header = formatter("th", style = ~ "text-align: center;") )
内容的提问来源于stack exchange,提问作者Rodrigo Badilla
相关产品推荐
相关产品推荐

