【问题标题】:Assign specific colors to geom_tile cells given vector of hex color code给定十六进制颜色代码的向量,将特定颜色分配给 geom_tile 单元格
【发布时间】:2017-06-22 22:25:16
【问题描述】:

我需要帮助将正确的十六进制颜色代码分配给 ggplot + geom_tile() 以获得 86x86 矩阵。它是一个相关矩阵,我想根据它的值和由 kmeans 聚类生成的类对其进行着色。有六种不同的簇/颜色。这是伪代码:

value[i,j] < 0.7, color '#FBB4AE'
value[i] == value[j] then color it according to its cluster value from kmeans 
else: color '#FED9A6'

这是数据的 sn-p (11x6):

1   1.000000000  0.39444675  0.71206533  0.45434411  0.39223227  0.450000000
2   0.394446746  1.00000000  0.67660082  0.52710164  0.48768778  0.457329560
3   0.712065332  0.67660082  1.00000000  0.66864785  0.52839595  0.641500299
4   0.454344111  0.52710164  0.66864785  1.00000000  0.52414242  0.356348323
5   0.392232270  0.48768778  0.52839595  0.52414242  1.00000000 -0.147087101
6   0.450000000  0.45732956  0.64150030  0.35634832 -0.14708710  1.000000000
7   0.511111111  0.35252487  0.64150030  0.84632727  0.27238352  0.490740741
8   0.064888568  0.26429707 -0.01560976  0.08671100 -0.07953560  0.243332132
9   0.307350428  0.40105559  0.52720311  0.80357143  0.38000325  0.356348323
10  0.509636861  0.25374774  0.44294040  0.19771865 -0.04836194  0.630196118
11  0.394557570  0.21145645  0.07909650  0.52724973  0.22568906 -0.027399831

我有一个名为 flavors.color 的单独 (7396x1) 向量,其中包含与 86x86 矩阵的每个元素对应的十六进制颜色代码。这些颜色代码基于我上面所说的条件。顶部是每个元素出现的表格。 #CCCCCC 是最常见的。

融化后:

p<-ggplot(data=corr.melt,aes(Var1,Var2)) + geom_tile(aes(fill=flavors.color),color="white") 
p+ scale_fill_manual(values = unique(flavors.color))

#CCCCCC 是“灰色”,但在我的情节中它是紫色的。我从brewer.pal(6,"Set2") 定义了我的颜色,并手动添加了另外两种颜色,#CCCCCC#FFFFCC。在Set2 中,紫色排在第四位。所以,“灰色”、“白色”和“紫色”混在一起了,我不知道为什么。这是结果的照片。

【问题讨论】:

    标签: r ggplot2 k-means


    【解决方案1】:

    您可以通过创建一个 86x86 网格来做到这一点。

     x <- seq(1,86)
     y <- seq(1,86)
     yxs <- expand.grid(x,y)
     yxs$flavors.color <- flavors.color
     ggplot(yxs,aes(x=Var1,y=Var2))+geom_tile(aes(fill=flavors.color))
    

    【讨论】:

    • 感谢您的建议,我试了一下,十六进制颜色代码显示不正确。他们似乎默认使用 ggplot 的默认配色方案。例如,十六进制代码#F2F2F2(白色)显示为“绿色”。
    • @SpencerTrinh 添加 scale_fill_manual(values=unique(flavors.color)) 应该可以修复它。
    • 太好了,它几乎可以工作了!但是,由于某种奇怪的原因,着色仍然关闭。我会更新问题,以便您了解我的意思
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2015-04-12
    相关资源
    最近更新 更多