如何为R语言formattable表格的color_bar组件添加内边距
实现默认color_bar增加10px左右内边距有两种可行方案:
方案1:最小改动CSS注入法
不需要修改原有核心逻辑,直接在你现有的htmlwidget链式调用中新增一行自定义CSS规则即可,代码如下:
FT %>% formattable() %>% as.htmlwidget() %>% # 新增这行CSS,给color_bar生成的带背景色的span设置左右10px内边距 prependContent(tags$style(".formattable span[style*='background-color'] { padding: 0 10px !important; }")) %>% prependContent(tags$style("tr:nth-child(odd) {background-color: #e6e6e6 !important;}")) %>% prependContent(tags$style("tr:nth-child(even) {background-color: #999999 !important;}"))
注意:如果你的表格内还有其他带背景色的自定义span元素,这个方案会统一生效,若需要隔离效果请用方案2
方案2:自定义兼容官方参数的color_bar
封装一个和官方color_bar用法完全兼容的自定义函数,新增padding参数灵活配置内边距,代码如下:
# 自定义带内边距的color_bar,支持所有官方原生参数,新增padding设置左右内边距 color_bar_with_padding <- function(color = "lightgray", fun = "proportion", padding = "10px", ...) { fun <- match.fun(fun) formatter("span", style = function(x) { style( display = "inline-block", direction = "rtl", `border-radius` = "4px", `padding-left` = padding, `padding-right` = padding, `background-color` = csscolor(color), width = percent(fun(as.numeric(x), ...)) ) } ) }
使用时直接替换原有color_bar调用即可:
FT <- formattable(DF, align =c("l","c","r","c"), list( Name=formatter("span", style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA)), Value = color_bar_with_padding("orange" , fun = unit.scale, padding = "10px"), Change = formatter("span", style = x ~ style(color = ifelse(x < 0 , "red", "green"), "font.size" = "18px"), x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x) )), table.attr = 'class=\"table table-striped\" style="font-size: 18px; font-family: Calibri"')
内容的提问来源于stack exchange,提问作者JK Lambert
相关产品推荐
相关产品推荐

