Исключить или установить уникальный цвет для нижнего треугольника тепловой карты корреляционной матрицы - PullRequest
0 голосов
/ 11 декабря 2018

Я создал корреляционную матрицу набора данных mtcars в виде графика с:

# Load data
data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]
# print the first 6 rows
head(my_data, 6)
res <- cor(my_data)
round(res, 2)
plot_ly(x=colnames(res), y=rownames(res), z = res, type = "heatmap") %>%
  layout(
    xaxis=list(tickfont = list(size = 30), tickangle = 45),
    margin = list(l = 150, r = 50, b = 150, t = 0, pad = 4))

Однако меня проинструктировали, что не следует отображать симметричную полную тепловую карту, поскольку она содержит 50% избыточной информации(верхний и нижний треугольники выше и ниже диагонали имеют симметричные противоположные значения).Если в используемом нами пакете построения тепловых карт есть опция, чтобы затемнить (отобразить единым равномерным серым цветом) нижнюю половину тепловой карты. Например:

enter image description here

1 Ответ

0 голосов
/ 11 декабря 2018

Один из вариантов - не использовать полный набор данных корреляции и отфильтровывать только одну половину матрицы, используя upper.tri.Вы могли бы даже рассмотреть возможность установки аргумента diag на TRUE, чтобы избавиться от возможно ненужных диагональных аргументов.

Как насчет ниже?

# Load data
library(plotly)
data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]
# print the first 6 rows
head(my_data, 6)
res <- cor(my_data)
res[upper.tri(res)] <- NA
round(res, 2)
plot_ly(x=colnames(res), y=rownames(res), z = res, type = "heatmap") %>%
  layout(
    xaxis=list(tickfont = list(size = 30), tickangle = 45),
    margin = list(l = 150, r = 50, b = 150, t = 0, pad = 4))

enter image description here

...