-4
我試圖在「R與兩個不同的相關矩陣中製作相關性熱圖」,下三角形應該對應不同的矩陣和上三角形,有100個基因,我做了基因芯片和轉錄組,現在我想在單個熱圖中繪製兩個不同的三角形 Thanx提前「R」中具有兩個不同相關矩陣但行名相同的單相關熱圖
我試圖在「R與兩個不同的相關矩陣中製作相關性熱圖」,下三角形應該對應不同的矩陣和上三角形,有100個基因,我做了基因芯片和轉錄組,現在我想在單個熱圖中繪製兩個不同的三角形 Thanx提前「R」中具有兩個不同相關矩陣但行名相同的單相關熱圖
您可以通過首先創建一個相關矩陣,你想使用,然後從你的組合相關矩陣繪製熱圖。
首先,我將生成兩個隨機數據集ta,所以我們將有兩個相關矩陣組合。
set.seed(24601)
# generate random data for first correlation matrix
m <- matrix(runif(25, min = -1, max = 1), ncol = 5)
cov1 <- m %*% t(m) # make it symmetrical and positive definite
df1 <- mnormt::rmnorm(n = 100, varcov = cov1, sqrt=NULL)
colnames(df1) <- paste("X", 1:5, sep = "_")
# generate random data for second correlation matrix
m <- matrix(runif(25, min = -1, max = 1), ncol = 5)
cov2 <- m %*% t(m)
df2 <- mnormt::rmnorm(n = 100, varcov = cov2, sqrt=NULL)
colnames(df2) <- paste("X", 1:5, sep = "_")
獲取兩個相關矩陣:
cor1 <- cor(df1)
cor2 <- cor(df2)
從一個相關矩陣與所述下從其他聯合上部三角形:
cor_combined <- cor1
cor_combined[upper.tri(cor_combined)] <- cor2[upper.tri(cor2)]
diag(cor_combined) <- NA # remove diagonal for better plotting (optional)
繪製熱圖,示出這裏使用ggplot2
。由於ggplot()
通常對長格式的數據效果最好,因此我使用gather
來重新格式化數據---用於繪圖的數據幀的前六行顯示在head()
命令之後。
cor_df <- as.data.frame(cor_combined) %>%
dplyr::mutate(var1 = row.names(.)) %>%
tidyr::gather("var2", "value", -var1)
> head(cor_df)
var1 var2 value
1 X_1 X_1 NA
2 X_2 X_1 -0.62115508
3 X_3 X_1 0.65660075
4 X_4 X_1 -0.24248121
5 X_5 X_1 -0.67412086
6 X_1 X_2 -0.01013485
ggplot(cor_df, aes(var1, var2)) +
geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient(low = "darkred", high = "navy") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
labs(x=NULL, y=NULL) +
theme(legend.position = "none",
axis.ticks = element_blank(),
axis.text.x = element_text(angle = 60, hjust = 1))