为相关矩阵热图的底部三角形排除或设置唯一的颜色

时间:2018-12-11 01:30:42

标签: r plotly heatmap

我用以下方法绘制了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 :(得分:2)

一种选择是不使用完整的相关数据集,而仅使用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