有没有办法创建类似于 excel 的条件格式 -> 色阶的效果,以便在 grid.table/tablegrob 对象中显示表格?对于列中的较低值,颜色指示器应为红色,为较高值应为绿色。需要该对象格式,以便表格可以与图表一起以网格格式呈现。
谢谢你。
有没有办法创建类似于 excel 的条件格式 -> 色阶的效果,以便在 grid.table/tablegrob 对象中显示表格?对于列中的较低值,颜色指示器应为红色,为较高值应为绿色。需要该对象格式,以便表格可以与图表一起以网格格式呈现。
谢谢你。
您可以在tableGrob
. 您创建一个颜色矢量,然后将它们分配给单元格。
因此,使用 clemens 的回答中的数据:
library(gridExtra)
library(grid)
# define colour vector
# change `vec` argument of `findInterval` to suit your cut-points
cols <- c("red" ,"orange", "green") [findInterval(my_data$Balance, c(-Inf, 1e4, 2e4, Inf))]
# or
# https://stackoverflow.com/questions/34517031/red-amber-green-sequential-palette-for-treemap-in-r
cols <- colorRampPalette(c("red", "yellow", "green"))(nrow(my_data))[rank(my_data$Balance)]
# create tales individually for each column
# this make it easy to assign colours to rows
t1 <- tableGrob(my_data["Balance"],
theme=ttheme_default(
core=list(bg_params = list(fill=cols)),
colhead = list(bg_params=list(fill="white", col="grey90"))),
rows = NULL)
t2 <- tableGrob(my_data["ID"],
theme=ttheme_default(
core=list(bg_params = list(fill="white", col="grey90")),
colhead = list(bg_params=list(fill="white", col="grey90"))),
rows = NULL)
# join tables
tab <- gtable_combine(t2, t1)
# grid.newpage() ; grid.draw(tab)
# if also want to add black border
# https://stackoverflow.com/questions/31506294/gtable-put-a-black-line-around-all-cells-in-the-table-body
library(gtable)
tab <- gtable::gtable_add_grob(tab,
grobs = rectGrob(gp=gpar(fill=NA, lwd=2)),
t = 1, b = nrow(tab), l = 1, r = ncol(tab))
grid.newpage() ; grid.draw(tab)
您可以tableHTML
为此使用:
library(tableHTML)
对于数据集:
set.seed(666)
my_data <- data.frame(ID = 101:117,
Balance = sample(-1000:60000, 17))
ID Balance
1 101 46237
2 102 11030
3 103 58657
4 104 11280
5 105 21034
6 106 44296
7 107 58697
8 108 29381
9 109 -188
10 110 14854
11 111 46322
12 112 -2
13 113 4839
14 114 7670
15 115 11875
16 116 48475
17 117 1228
然后,您可以使用该tableHTML()
函数创建 HTML 表格。然后将带有主题的颜色等级应用于RAG
表格的第二列:
my_data %>%
tableHTML(rownames = FALSE,
widths = c(50, 100)) %>%
add_css_conditional_column(columns = 2,
colour_rank_theme = 'RAG',
decreasing = TRUE)
结果如下所示:
我发现的一个解决方案是执行以下操作..这仅在数据有序并且您列出行数(根据您的屏幕截图为 17)时才有效:
theme=ttheme_default(
core=list(bg_params = list(fill=blues9[1:17]) or
theme=ttheme_default(
core=list(bg_params = list(fill=blues9[1:17])
希望有帮助。我自己也在寻找替代品