如何在我的热图上分配9列独立梯度的特定颜色?

时间:2019-05-21 17:21:32

标签: r ggplot2 heatmap

我有一个文件,其中包含以下代码段,但其中包含3000种不同动物和血型的条目

FileA

fitleredfalse

我正在尝试生成一个热图,其中我的y轴是动物,x轴上的血型和计数值。

我正在尝试使用自己的 特定 颜色和每列的上升梯度按血型分别为每列着色,以轻松分辨出哪种动物的O阳性数高,或A阳性等,以及哪些动物通过降低梯度来降低运行速度等。(因为血型采用了颜色编码,以便于观察)

基本上,我已经尝试做类似此stackoverflow问题中的操作:ggplot2 heatmaps: using different gradients for categories

或每行此颜色不同的一种: Heat map per column with ggplot2

Animal Bloodtype Count
Horse  Opos      10
Horse  Apos      5
Horse  Bpos      4
Horse  ABpos     5
Horse  Oneg      6
Horse  Aneg      7
Horse  Bneg      9
Horse  ABneg     10
Horse  Unknown   10
Cat    Opos      12
Cat    Apos      15
Cat    Bpos      14
Cat    ABpos     15
Cat    Oneg      16
Cat    Aneg      17
Cat    Bneg      19
Cat    ABneg     14
Cat    Unknown   14
Dog    Opos      9
Dog    Apos      23
Dog    Bpos      12
Dog    ABpos     42
Dog    Oneg      45
Dog    Aneg      23
Dog    Bneg      45
Dog    ABneg     32
Dog    Unknown   32
Mouse  Opos      3
Mouse  Apos      4
Mouse  Bpos      5
Mouse  ABpos     3
Mouse  Oneg      6
Mouse  Aneg      8
Mouse  Bneg      8
Mouse  ABneg     20
Mouse  Unknown   20
Pig    Opos      19
Pig    Apos      13
Pig    Bpos      22
Pig    ABpos     32
Pig    Oneg      25
Pig    Aneg      13
Pig    Bneg      35
Pig    ABneg     22
Pig    Unknown   22

但是渐变结果是错误的,并且到处都是颜色。我一直在尝试找到如何为热图中的特定列标题分配颜色,即Unknown =“ blue4”,ABneg =“ red4”,但无济于事。基本上,我不知道我在做什么。 :(

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

因此,我想到的最简单的解决方案是将血型映射到填充颜色,然后将计数映射到alpha刻度,这样高计数就具有较高的色彩强度,而低计数则接近白色。我不确定您对递增和递减渐变的含义,所以我大多忽略了这一点。

假设dfdata.frame格式的数据片段:

ggplot(df, aes(x = Bloodtype, y = Animal, fill = Bloodtype, alpha = Count)) +
  # Dummy tile geom for white background
  geom_tile(fill = "white", alpha = 1) +
  geom_tile() +
  scale_alpha_continuous(breaks = seq(0, max(df$Count), length.out = 10), 
                         limits = c(0, NA))

enter image description here

您可能需要在alpha比例尺上的突破和限制附近摸索一些以匹配您的数据。当然,您可以通过向图上添加scale_fill_*()来选择想要填充的任何颜色。