r - 数据表 R 中的调色板
问题描述
好奇为什么我们不能在datatables
.
在下面的代码中,iris
没有 NA,为了简单起见,我想对 150 个条目应用发散方案。所有列都会将颜色应用于 Sepal.Length 等级,但按列执行它很简单......
library(DT);library(colorspace);library(dplyr)
data(iris)
dt=datatable(iris)
for (x in colnames(iris)) {
if(x=='Species')next
dt=dt %>%
formatStyle(x, color = tolower(diverging_hsv(150)[rank(iris$Sepal.Length)]))
}
没有报告错误,但这不起作用
注意带有 NA 的不同数据集会弄乱颜色:
dt <- datatable(airquality)
these=c('Wind','Ozone')
for (x in these) {
#v <- full_seq(unique(airquality[[x]]), .1)
v = airquality[[x]]
cs <- diverging_hsv(length(v))
dt <- dt %>%
formatStyle(x, backgroundColor = styleEqual(v, cs))
}
解决方案
您似乎无法将值向量直接传递给颜色参数,formatStyle()
而是可以使用辅助函数styleEqual()
将值映射到颜色 1 到 1:
library(DT)
library(colorspace)
library(dplyr)
library(tidyr)
dt <- datatable(iris)
for (x in colnames(iris)) {
if (x == 'Species') next
v <- full_seq(unique(iris[[x]]), .1)
cs <- diverging_hsv(length(v))
dt <- dt %>%
formatStyle(x, color = styleEqual(v, cs))
}
推荐阅读
- c# - 在 C# 中显示来自 JSON 的所有名称列表
- uiview - 自定义 UIView 的大小不正确(框架、边界)
- amazon-web-services - 尝试在本地访问 DynamoDB 时超时
- android - 如何在 Android 中使用 Mokito 覆盖/自定义函数的行为
- android - 为什么模块没有显示在应用程序模块依赖项中
- java - 关于 3-Sum 算法,数组访问次数如何计算(1/2 N^3),增长顺序如何计算(N^3)?
- vim - 如何使用通用 ctags 在标签栏中显示 case 语句
- c - 如何在 C 中使用带有文本文件的循环填充字符数组
- android - 片段中的片段/工具栏显示在错误的位置
- flutter - 图像选择器颤振 web 1.9