Как лучше всего представить три переменные вместе в тепловой карте? - PullRequest
1 голос
/ 04 апреля 2020

Учитывая такую ​​матрицу, как:

m <- matrix(ncol = 4, nrow = 3)
colnames(m) <-c("attribute1-1","attribute1-2","attrbute1-3","attribute2")
rownames(m) <-c("sample1","sample2","sample3")
m[1,] <- c(5,7,0,2)
m[2,] <- c(0,0,0,6)
m[3,] <- c(0,0,4,1)

Я хотел бы составить тепловую карту, где атрибуты 1-1: 1-3 используются для указания наличия / отсутствия (независимо от того, является ли эта отдельная запись пустой или нет в зависимости от того, есть ли положительное значение или 0), а атрибут 2 используется для указания интенсивности. Другими словами: если в соответствии со столбцом attribute1 присутствует эта строка в этом экземпляре атрибута 1 (например, положительное значение для attribute1-2 для row1), то интенсивность предписывается атрибутом 2.

Я думаю, что присутствие / отсутствие может быть сделано с помощью формулы, такой как "decostand": X.pa <- decostand (X, method = "pa") </p>

И тепловые карты могут быть созданы из нескольких пакетов, в частности " Перегрев».

Хотя я не могу заставить что-либо работать. Любой совет относительно того, сколько продолжать, будет высоко ценится. Заранее спасибо.

1 Ответ

1 голос
/ 04 апреля 2020

Спасибо за добавление данных образца. Решение с использованием ggplot2:

m <- matrix(ncol = 4, nrow = 3)
colnames(m) <-c("attribute1-1","attribute1-2","attrbute1-3","attribute2")
rownames(m) <-c("sample1","sample2","sample3")
m[1,] <- c(5,7,0,2)
m[2,] <- c(0,0,0,6)
m[3,] <- c(0,0,4,1)

m
#>         attribute1-1 attribute1-2 attrbute1-3 attribute2
#> sample1            5            7           0          2
#> sample2            0            0           0          6
#> sample3            0            0           4          1


# library
library(tidyverse)


# adjust data
dat <- m %>%
  as_tibble(rownames="sample") %>%
  gather(name,value, -c(sample,attribute2)) %>% 
  mutate(attribute2=case_when(value==0 ~ 0, TRUE ~attribute2)) 

#make plot
ggplot(dat,aes(name,sample)) +
  geom_tile(aes(fill = attribute2), colour = "white") +
  scale_fill_gradient(low = "white", high = "steelblue")

Создано в 2020-04-04 пакетом Представлять (v0.3.0)

...