這個問題在某種程度上是相關的,但不取決于這個
我想讓列中的文本以mpg白色為條件,以在我的代碼的行內 html 部分中編碼為深色背景,例如在轉換為gt物件之前。
雖然這有效:這不是我要找的!
library(dplyr)
library(gt)
library(viridis)
head(mtcars[,1:2]) %>%
gt() %>%
data_color(
columns = c(mpg),
colors = scales::col_numeric(
palette = viridis(20, direction = 1, option ="D"), #color from viridis package
domain = NULL)
)
給出:

到目前為止我已經嘗試過:添加color:white到行內 html
head(mtcars[,1:2]) %>%
mutate(
color = scales::col_numeric(
palette = viridis(20, direction = 1, option ="D"), #color from viridis package
domain = NULL)(mpg),
mpg = glue::glue('<span style=\"display: inline-block; direction: ltr; color:white; border-radius: 5px; padding-right: 2px; background-color: {color}; width: 100%\"> {mpg} </span>'),
mpg = map(mpg, ~gt::html(as.character(.x)))
) %>%
select(-color) %>%
gt()
這使:

uj5u.com熱心網友回復:
一種選擇是prismatic::best_contrast. 默認情況下它不會使用純色white,所以我們必須設定顏色:
prismatic::best_contrast("red", c("white", "black"))
#> [1] "black"
prismatic::best_contrast("purple", c("white", "black"))
#> [1] "white"
這可以很容易地添加到您的glue字串中,以根據背景顏色設定字體顏色:
head(mtcars[, 1:2]) %>%
mutate(
color = scales::col_numeric(
palette = viridis(20, direction = 1, option = "D"), # color from viridis package
domain = NULL
)(mpg),
mpg = glue::glue(
'<span style=\"display: inline-block; direction: ltr; border-radius: 5px; padding-right: 2px;',
'color: {prismatic::best_contrast(color, c("white", "black"))}; background-color: {color}; width: 100%\"> {mpg} </span>'
),
mpg = map(mpg, ~ gt::html(as.character(.x)))
) %>%
select(-color) %>%
gt()

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/411881.html
標籤:
