如何在R中着色数据框

问题描述 投票:0回答:2

我有以下类型的数据框

> 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按任何调色板着色值。但不幸的是,我完全没有想法如何去做。论坛找到了两种颜色着色问题的答案。

相似的东西

enter image description here

r dataframe plot
2个回答
3
投票

如果我正确理解了您的问题,那么您可以使用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") 

enter image description here

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))

enter image description here

您可以从here查看更多信息:

以上示例直接取自上述位置。请注意,如果要更改颜色,则必须使用不同的rgb值更改“colors”对象,例如,如果使用以下更改上述字符串:

colors <- round(seq(255, 40, length.out = length(breaks) + 1), 0) %>% 
  {paste0("rgb(", ., ",255,", ., ")")}

你会得到鹦鹉绿色而不是红色。


0
投票

热图怎么样?

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)

enter image description here

https://bioconductor.org/packages/devel/bioc/vignettes/ComplexHeatmap/inst/doc/s2.single_heatmap.html

© www.soinside.com 2019 - 2024. All rights reserved.