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

Exclude or set a unique color to the bottom triangle of a correlation matrix heatmap

我已经在 plotly 中创建了 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% 的冗余信息(对角线上方和下方的顶部和底部三角形具有对称的相反值)。如果我们正在使用的热图绘图包中有一个选项,可以将 heatmap.For 示例的下半部分变灰(显示为单一、统一的灰色):

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