我有以下类型的数据框
> df
V1 V2 V3 V4 V5
1 10.603.3.100 2 1 5 1
2 10.603.3.101 3 2 4 5
3 10.603.3.102 1 3 3 2
4 10.603.1.103 4 4 3 3
5 10.603.3.104 5 5 1 4
并且任务是通过列V2,V3,V4,V5按任何调色板着色值。但不幸的是,我完全没有想法如何去做。论坛找到了两种颜色着色问题的答案。
相似的东西
如果我正确理解了您的问题,那么您可以使用library(DT)
为您的列着色,如下所示:
来自DT包的?datatable
:
此函数创建一个HTML小部件,以使用JavaScript库DataTables显示矩形数据(矩阵或数据框)。
df <- head(iris, 10)
library(tidyverse)
library(DT)
datatable(df, rownames = FALSE) %>%
formatStyle(columns = "Sepal.Length",
backgroundColor = "yellow") %>%
formatStyle(columns = "Sepal.Width",
backgroundColor = "blue") %>%
formatStyle(columns = "Petal.Width",
backgroundColor = "green")
OP添加后的新编辑图片:
df <- data.frame(cbind(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE)))
breaks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
colors <- round(seq(255, 40, length.out = length(breaks) + 1), 0) %>%
{paste0("rgb(255,", ., ",", ., ")")}
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(breaks, colors))
您可以从here查看更多信息:
以上示例直接取自上述位置。请注意,如果要更改颜色,则必须使用不同的rgb值更改“colors”对象,例如,如果使用以下更改上述字符串:
colors <- round(seq(255, 40, length.out = length(breaks) + 1), 0) %>%
{paste0("rgb(", ., ",255,", ., ")")}
你会得到鹦鹉绿色而不是红色。
热图怎么样?
library(ComplexHeatmap)
library(circlize)
set.seed(123)
mat = cbind(rbind(matrix(rnorm(16, -1), 4), matrix(rnorm(32, 1), 8)),
rbind(matrix(rnorm(24, 1), 4), matrix(rnorm(48, -1), 8)))
# permute the rows and columns
mat = mat[sample(nrow(mat), nrow(mat)), sample(ncol(mat), ncol(mat))]
rownames(mat) = paste0("R", 1:12)
colnames(mat) = paste0("C", 1:10)
使用默认设置绘制热图。热图的默认样式与其他类似热图功能生成的样式完全相同。
Heatmap(mat)