编辑数据中单元格的 RGB 颜色 Table (R)
Edit RGB colors of Cells in Data Table (R)
我正在处理一个包含数据 table 的项目。我希望数据 table 单元格按列中的相似值着色。我很难理解如何修改下面的代码以便能够在我的数据中选择颜色 table。该代码取自我在 Whosebug 上找到的另一个示例:
set.seed(1)
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE))
brks <- apply(df, 2, quantile, probs=seq(.05, .95, .05), na.rm=T)
clrs <- apply( brks, 2, function(x) round(seq(255, 40, length.out = length(x)+1), 0)
%>% {paste0("rgb(255,", ., ",", ., ")")})
eval(parse(text=paste0("datatable(df) ", paste(sapply(1:ncol(df), function(i)
paste0("%>% formatStyle(names(df)[",i,"], backgroundColor = styleInterval(brks[,",i,"],
clrs[,",i,"]))") ), collapse = " " ))))
我不明白如何修改 paste0 中的 clrs 行和 rgb 函数以获得我想要的颜色。我已经对这两个块进行了修补,但无法弄清楚它是如何工作的。有人可以向我解释如何使用上面的代码准确指定颜色。如果我想让颜色变成蓝色或绿色,或者从一种颜色渐变为另一种颜色,我该怎么做?
我很卡。任何帮助,将不胜感激!谢谢!
首先eval
用于评估一个名字,一个电话或其他...在这种情况下它是一个名字。我提出了一个更简单的代码,我可以解释每个部分,这将是你的一部分来适应它:
library(DT)
# the dataset
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10))
# the color wanted
sample_color <- data.frame(col1 = c(0.2, 0.1, 0.6),
col2 = c(0.5, 0.1, 0.3))
datatable(df) %>%
formatStyle('1', color = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))))
我们需要使用 matrix
因为 that. The eval
and call
are only base R that you will probably better understand if you directly goes to their presentation pages : eval, call。
编辑 1 更改数据表单元格的背景颜色
datatable(df) %>%
formatStyle('1', color = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))),
backgroundColor = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))))
查看 DT 的包插图以更好地了解其工作原理。有适合您的格式货币部分。
我正在处理一个包含数据 table 的项目。我希望数据 table 单元格按列中的相似值着色。我很难理解如何修改下面的代码以便能够在我的数据中选择颜色 table。该代码取自我在 Whosebug 上找到的另一个示例:
set.seed(1)
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE))
brks <- apply(df, 2, quantile, probs=seq(.05, .95, .05), na.rm=T)
clrs <- apply( brks, 2, function(x) round(seq(255, 40, length.out = length(x)+1), 0)
%>% {paste0("rgb(255,", ., ",", ., ")")})
eval(parse(text=paste0("datatable(df) ", paste(sapply(1:ncol(df), function(i)
paste0("%>% formatStyle(names(df)[",i,"], backgroundColor = styleInterval(brks[,",i,"],
clrs[,",i,"]))") ), collapse = " " ))))
我不明白如何修改 paste0 中的 clrs 行和 rgb 函数以获得我想要的颜色。我已经对这两个块进行了修补,但无法弄清楚它是如何工作的。有人可以向我解释如何使用上面的代码准确指定颜色。如果我想让颜色变成蓝色或绿色,或者从一种颜色渐变为另一种颜色,我该怎么做?
我很卡。任何帮助,将不胜感激!谢谢!
首先eval
用于评估一个名字,一个电话或其他...在这种情况下它是一个名字。我提出了一个更简单的代码,我可以解释每个部分,这将是你的一部分来适应它:
library(DT)
# the dataset
df <- cbind.data.frame(matrix(round(rnorm(50), 3), 10))
# the color wanted
sample_color <- data.frame(col1 = c(0.2, 0.1, 0.6),
col2 = c(0.5, 0.1, 0.3))
datatable(df) %>%
formatStyle('1', color = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))))
我们需要使用 matrix
因为 that. The eval
and call
are only base R that you will probably better understand if you directly goes to their presentation pages : eval, call。
编辑 1 更改数据表单元格的背景颜色
datatable(df) %>%
formatStyle('1', color = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))),
backgroundColor = eval(call(name = "rgb",
matrix(sample_color$col1, ncol = 3))))
查看 DT 的包插图以更好地了解其工作原理。有适合您的格式货币部分。