Построение тепловой карты из матрицы общих значений в R - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть разделенный табуляцией файл, подобный следующему:

        C1P C2P C3P C4P C5P
sam1    3 cp    3 cp    3 cp    3 cp    3 cp
sam2    S3c 4 cp    3 cp    3 cp    S3c
sam3    3 cp    3 cp    3 cp    3 cp    3 cp
sam4    3 cp    3 cp    LOH LOH 3 cp
sam5    3 cp    3 cp    3 cp    3 cp    3 cp
sam6    4 cp    4 cp    UPD UPD UPT

Теперь я хочу назначить цвет каждому значению [условие] ... и позволить цвету появляться везде, где есть одно и то же значение, создавая тем самым тепловую карту, которая представляет вхождения определенного условия [значения в столбце] в каждом образец [заголовки строк].

enter image description here

Прямо сейчас я присваиваю числовые значения каждому условию, затем генерирую тепловую карту через pheatmap. Но я искал более надежный способ сделать это.

Ценю любую помощь.

1 Ответ

0 голосов
/ 17 сентября 2018

Это должно вас довольно близко:

library(tidyverse)
df %>%
    rownames_to_column("row") %>%
    gather(col, Value, -row) %>%
    mutate(
        row = factor(row, levels = rev(unique(row))),
        Value = factor(Value)) %>%
    ggplot(aes(col, row, fill = Value)) +
    geom_tile() +
    scale_fill_manual(values = c(
        `3 cp` = "yellow",
        `4 cp` = "red",
        LOH = "blue",
        S3c = "lightgreen",
        UPD = "darkgreen",
        UPT = "black")) +
    labs(x = "", y = "") +
    theme_minimal()

enter image description here

Пояснение:

  1. Изменение формы данных с широкого на длинный.
  2. Используйте geom_tile, чтобы нарисовать тепловую карту, где цвет заливки задается уровнями factor ваших значений.
  3. Остальное - это «пух» для увеличения сходства с изображением, на которое вы ссылаетесь.

Пример данных

df <- read.table(text =
    "        C1P C2P C3P C4P C5P
sam1    '3 cp'    '3 cp'    '3 cp'    '3 cp'    '3 cp'
sam2    'S3c' '4 cp'    '3 cp'    '3 cp'    'S3c'
sam3    '3 cp'    '3 cp'    '3 cp'    '3 cp'    '3 cp'
sam4    '3 cp'    '3 cp'    LOH LOH '3 cp'
sam5    '3 cp'    '3 cp'    '3 cp'    '3 cp'    '3 cp'
sam6    '4 cp'    '4 cp'    UPD UPD UPT", header = T)
...