【问题标题】:How coloring data frame in R如何在 R 中为数据框着色
【发布时间】:2017-12-08 14:42:14
【问题描述】:

我有以下类型的数据框

> 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 对值进行着色。但不幸的是,我完全不知道该怎么做。论坛找到了两种颜色着色问题的答案。

类似的东西

【问题讨论】:

  • 这些是 RGBA 值吗?或者您是否尝试为每组 V2 到 V5 列分配不同的颜色?
  • @Moody_Mudskipper 是的,我就是这个意思
  • 从您的示例看来,这实际上都不是我的建议。也许将包ggplot2geom_tilegeom_text 一起使用。但实际上您的问题非常不清楚,您无法为“值”着色。在这一点上,我仍然不确定您是否要将其绘制为图像、html 表格或直接在 Excel 中。

标签: r dataframe plot


【解决方案1】:

如果我正确理解了您的问题,那么您可以使用library(DT) 为您的列着色,如下所示:

?datatable 来自 DT 包:

这个函数创建一个 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,", ., ")")}

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

【讨论】:

  • 并非如此。您可以在描述中看到一个着色示例。我添加了一张图片
  • @Dmitry 你是在说条件格式吗,之前的问题还不清楚,我会更新我的答案,稍等片刻
【解决方案2】:

热图怎么样?

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)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多