首页 > 解决方案 > 单个热图中的两种类型的变量(使用 R)

问题描述

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

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 知之甚少,但我很高兴能进一步了解它。因此,请随意放置您想要的任何代码,我会尽力理解它。

先感谢您。路易斯

标签: rvariablesheatmapcorrelation

解决方案


这是使用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()

在此处输入图像描述

数据

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)

推荐阅读