我尝试在R中合并以下两个reactable特性:
- 条件样式
- 聚合/分组
我的目标是根据组总和值,用不同的橙子阴影突出显示聚合(总和)组标题。这样,更容易发现具有高/低值的组。
我只使用一个颜色范围c("#ffe4cc", "#ffb54d")
作为单元格值和组标题,例如。100
作为单元格值和100
作为组头会产生相同的颜色。
到目前为止,我已经尝试了(这是一个简化的示例,我的真实的世界问题需要在多个列/组上突出显示):
library(datasets)
library(reactable)
data('CO2')
get_orange <- function(x) rgb(colorRamp(c("#ffe4cc", "#ffb54d"))(x), maxColorValue = 255)
reactable(
CO2,
groupBy = c('Plant', 'Type', 'Treatment'),
columns = list(
conc = colDef(
aggregate = 'mean'
),
uptake = colDef(
aggregate = 'sum',
style = function(value) {
normalized <- (value - min(CO2$uptake)) / (max(CO2$uptake) - min(CO2$uptake))
color <- get_orange(normalized)
list(background = color)
}
)
)
)
导致:Screenshot expected vs actual
> packageVersion('reactable')
[1] ‘0.2.3’
1条答案
按热度按时间dxxyhpgq1#
我找到了一个变通的方法来处理组中的条件样式。
通过在reactable的colDef(style=)中注入JS函数,可以计算每个单元格的颜色。
您可以找到完整的示例here。
对于每一列,你想要一个条件格式,你必须绕过一个
JS()
函数,像这样:注入的JS函数使用
rowInfo
作为输入参数,并返回一个命名列表。在本例中,我们返回文本颜色color
和单元格背景颜色backgroundColor
。使用此解决方法,可以为表中的每列设置自定义颜色范围,也可以将多列合并为一个颜色范围。
github/glin/reactable
上的线程可以在这里找到。