我正在制作一张gt
表格,显示个人朝着目标迈进的进度。在表格中,有一行显示了实现该目标的水平条形图(如果目标为 50 且得分为 40,则条形为 80%)。
但是,当我使用参数更改 gt 行groupname_col
的顺序时,其他单元格的顺序会更改,但gtExtras
gt_plt_bar_pct
列的顺序不会更改,因此它显示了该行中名称和分数的错误条,而是列似乎总是按输入数据中的行顺序表示。
我知道我可以通过arrange
在开始之前在 df 上使用来解决这个问题gt
,但这似乎不是一个好的解决方案,因为我想要更改行的顺序以由不同的组查看。这是一个缺陷gtExtras
吗?有更好的解决方法吗?
谢谢!
代表:
library(tibble)
library(gt)
library(gtExtras)
library(dplyr)
# make dataframe of individuals and their goals
df <- tribble(
~name, ~group, ~score, ~goal,
"Bob", "C", 20, 40,
"Chris", "A", 50, 40,
"Dale", "B", 30, 50,
"Jay", "A", 0, 40,
"Ben", "B", 10, 20
) %>%
# calculate percent towards goal, and cap at 100%
mutate(percent_to_goal = score/goal *100,
percent_to_goal = case_when(percent_to_goal >= 100 ~ 100,
TRUE ~ percent_to_goal))
df %>%
# this fixes the issue, but doesn't seem like a permanent solution
#arrange(group, name) %>%
# make gt table
gt(rowname_col = "name", groupname_col = "group") %>%
# order groups
row_group_order(groups = c("A","B","C")) %>%
# add bar chart column
gt_plt_bar_pct(column = percent_to_goal) %>%
# highlight blue if person reaches their goal
tab_style(
style = list(
cell_fill(color = "lightcyan"),
cell_text(weight = "bold")),
locations = cells_body(
columns = c(goal,score, percent_to_goal),
rows = score >= goal
)
)
这是上述代码的输出:请注意,条形图的长度并不总是反映它们出现的行的值。相反,它们反映了原始数据集的顺序。
编辑:删除row_group_order
. 如果我再次运行上述代码,但注释掉旨在重新排列组外观的行,则分组以不同的顺序显示(原始数据集中组的出现顺序),名称和前两列排序为这些组相应地,但条形图列仍然没有,并且保持数据集的原始顺序。下图: