单个热图中的两种类型的变量(使用R)

时间:2018-08-04 17:52:59

标签: r variables heatmap correlation

我必须以某种方式绘制免疫动物的数据,以可视化保护的可能相关性。作为背景,当我们给动物接种疫苗时,它会产生抗体,该抗体可能与保护相关。我们用9种不同的蛋白质对牛进行了免疫,并测得的抗体滴度高达1.5(光学密度(O.D.))。我们还测量了高达5000的tick负荷。每只动物的每种蛋白质具有不同的效价和不同的tick负荷,也许某些蛋白质比其他蛋白质对保护更重要,我们认为通过热图可以说明这一点。

TL; DR:绘制一个热图,其中一个变量(Ticks)的范围从6到5000,另一个变量(Prot1至Prot9)的范围从1.5。

我的数据示例:

Animal  Group   Ticks   Prot1   Prot2   Prot3   Prot4   Prot5   Prot6   Prot7   Prot8   Prot9
G1-54-102   control 3030    0.734   0.402   0.620   0.455   0.674   0.550   0.654   0.508   0.618
G1-130-102  control 5469    0.765   0.440   0.647   0.354   0.528   0.525   0.542   0.481   0.658
G1-133-102  control 2070    0.367   0.326   0.386   0.219   0.301   0.231   0.339   0.247   0.291
G3-153-102  vaccinated  150 0.890   0.524   0.928   0.403   0.919   0.593   0.901   0.379   0.647
G3-200-102  vaccinated  97  1.370   0.957   1.183   0.658   1.103   0.981   1.051   0.534   1.144
G3-807-102  vaccinated  606 0.975   0.706   1.058   0.626   1.135   0.967   0.938   0.428   1.035

我对R知之甚少,但是我很高兴能了解更多有关R的知识。因此,请随意放置所需的任何代码,我会尽力理解它。

先谢谢您。 路易斯

2 个答案:

答案 0 :(得分:1)

这里是使用ggplot2程序包创建热图的选项。您需要将数据帧从宽格式转换为长格式。如果数字是离散的,那么将Ticks列从数字转换为因数也很重要。

library(tidyverse)
library(viridis)

dat2 <- dat %>%
  gather(Prot, Value, starts_with("Prot"))

ggplot(dat2, aes(x = factor(Ticks), y = Prot, fill = Value)) +
  geom_tile() +
  scale_fill_viridis()

enter image description here

数据

dat <- read.table(text = "Animal  Group   Ticks   Prot1   Prot2   Prot3   Prot4   Prot5   Prot6   Prot7   Prot8   Prot9
'G1-54-102'   control 3030    0.734   0.402   0.620   0.455   0.674   0.550   0.654   0.508   0.618
'G1-130-102'  control 5469    0.765   0.440   0.647   0.354   0.528   0.525   0.542   0.481   0.658
'G1-133-102'  control 2070    0.367   0.326   0.386   0.219   0.301   0.231   0.339   0.247   0.291
'G3-153-102'  vaccinated  150 0.890   0.524   0.928   0.403   0.919   0.593   0.901   0.379   0.647
'G3-200-102'  vaccinated  97  1.370   0.957   1.183   0.658   1.103   0.981   1.051   0.534   1.144
'G3-807-102'  vaccinated  606 0.975   0.706   1.058   0.626   1.135   0.967   0.938   0.428   1.035",
                  header = TRUE, stringsAsFactors = FALSE)

答案 1 :(得分:0)

ggplot2 / tidyverse的最新版本中,您甚至不需要显式加载viridis-程序包。通过scale_fill_viridis_c()包括比例。激动人心的时刻!