r - 将 lapply 与 colorRampPalette 结合使用

标签 r heatmap

我有以下向量:

x <- c(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 5, 5)

我想要做的是使用colorRampPalette为每个数字分配颜色。 但为什么这个命令给出的输出比我预期的要多:

library(RColorBrewer)
mycolorfunction <- colorRampPalette(brewer.pal(9,"Set1"))
unlist(lapply(as.list(x),mycolorfunction))

它给出了:

 [1] "#E41A1C" "#E41A1C" "#E41A1C" "#E41A1C" "#999999" "#E41A1C" "#999999" "#E41A1C" "#999999" "#E41A1C" "#999999"
[12] "#E41A1C" "#999999" "#E41A1C" "#999999" "#E41A1C" "#999999" "#E41A1C" "#FF7F00" "#999999" "#E41A1C" "#FF7F00"
[23] "#999999" "#E41A1C" "#FF7F00" "#999999" "#E41A1C" "#7E6E85" "#E1C62F" "#999999" "#E41A1C" "#4DAF4A" "#FF7F00"
[34] "#A65628" "#999999" "#E41A1C" "#4DAF4A" "#FF7F00" "#A65628" "#999999" "#E41A1C" "#4DAF4A" "#FF7F00" "#A65628"
[45] "#999999" "#E41A1C" "#4DAF4A" "#FF7F00" "#A65628" "#999999" "#E41A1C" "#4DAF4A" "#FF7F00" "#A65628" "#999999"
[56] "#E41A1C" "#4DAF4A" "#FF7F00" "#A65628" "#999999"

我希望它生成大小为 20 且只有 5 种颜色的十六进制向量。 正确的做法是什么?

最终,我想使用最终向量作为 heatmap.2 中的 RowSideColors 参数。

最佳答案

直接使用函数mycolorfunctionx作为索引向量:

x <- c(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 5, 5)
library(RColorBrewer)
mycolorfunction <- colorRampPalette(brewer.pal(9,"Set1"))

mycolorfunction(max(x))[x]
#  [1] "#E41A1C" "#E41A1C" "#E41A1C" "#4DAF4A" "#4DAF4A" "#4DAF4A" 
#  [7] "#4DAF4A" "#4DAF4A" "#4DAF4A" "#4DAF4A" "#FF7F00" "#FF7F00"
# [13] "#FF7F00" "#A65628" "#999999" "#999999" "#999999" "#999999"
# [19] "#999999" "#999999"

关于r - 将 lapply 与 colorRampPalette 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817031/

相关文章:

r - 如何声明带有 M 个元素的列表对象

python - 如何从 pandas DataFrame 绘制热图

rmarkdown html 嵌入 pdf/eps

r - 按组选择随机连续行作为组长度的比例

python-3.x - 如何绘制分类特征的 Cramer’s V 热图?

python - 来自带有 NaN 的 Pandas 数据框的 seaborn 热图

reactjs - 将 React SPA 与 hotjar 热图跟踪集成

javascript - 动画热图图层

R 脚本 - nls 函数

Python:如何像 R 一样进行基本的数据操作?