我有一个文件,其中包含以下代码段,但其中包含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”,但无济于事。基本上,我不知道我在做什么。 :(
任何帮助将不胜感激。
答案 0 :(得分:1)
因此,我想到的最简单的解决方案是将血型映射到填充颜色,然后将计数映射到alpha刻度,这样高计数就具有较高的色彩强度,而低计数则接近白色。我不确定您对递增和递减渐变的含义,所以我大多忽略了这一点。
假设df
是data.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))
您可能需要在alpha比例尺上的突破和限制附近摸索一些以匹配您的数据。当然,您可以通过向图上添加scale_fill_*()
来选择想要填充的任何颜色。