一、熱圖的概念
熱圖是數據可視化的一種形式,可以用來展示矩陣數據的結構和模式。熱圖通常使用顏色編碼表示數值,與坐標軸無關,因此可以快速發現數據之間的相關性和規律。熱圖可以應用於各種領域,包括生物科學、統計學、物理學等。比如可以用於生物學家對大量基因數據進行分析,用顏色編碼展示的熱圖可以讓他們迅速發現不同基因蛋白質在不同組織中表達水平的變化,以及這些變化是否與生理狀況相關。
二、實現熱圖的基本步驟
要實現一個熱圖,需要完成以下幾個步驟:
1、數據導入和處理
# 導入數據,此處以iris數據集為例
data(iris)
# 將分類數據Species轉換為數值
iris$Species <- as.numeric(factor(iris$Species))
# 將數據按照Species分組
groupedData <- split(iris[,1:4], iris$Species)
2、計算相關係數矩陣
# 計算相關係數矩陣,此處使用皮爾遜相關係數
corMatrix <- sapply(groupedData, function(x) cor(x))
# 將矩陣轉置以便於展示
corMatrix <- t(corMatrix)
3、生成熱圖
# 生成熱圖,使用ggplot2包
library(ggplot2)
ggplot(data = melt(corMatrix), aes(x = Var2, y = Var1, fill = value)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "red") +
labs(title = "熱圖示例", x = "", y = "") +
theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.text = element_text(size = 10),
axis.title = element_text(size = 12, face = "bold"))
三、熱圖的優化
1、調整顏色映射
默認情況下,ggplot2使用連續的顏色映射來表示數值。如果數據分布較為離散,某些部分可能會失去信息,因此需要對顏色映射進行調整。
2、添加顏色標尺
顏色標尺是熱圖中的一個重要元素,可以幫助用戶更好地理解顏色的含義。可以使用scale_fill_gradientn()或scale_fill_gradient2()函數來定製顏色標尺。
3、增加標籤
在熱圖中添加標籤是一種向讀者傳遞更多信息的方式。可以為x軸、y軸和熱圖本身增加標籤,以使讀者更好地理解數據。
四、熱圖的實際應用
熱圖可以被廣泛應用於各種領域的數據分析和可視化,下面以兩個實例進行說明。
1、基因表達譜熱圖
基因表達譜熱圖是用於顯示基因在不同條件下的表達情況的熱圖,可幫助生物學家找出與疾病相關的基因。下面是一個基因表達譜熱圖的例子:
# 導入數據,此處以GSE6145數據集為例
library(Biobase)
library(annotate)
library(limma)
data(GSE6145)
# 對數據進行標準化和過濾
x <- exprs(GSE6145)
x <- normalizeBetweenArrays(x, method="quantile")
keep <- filterByExpr(GSE6145)
x <- x[ ,keep]
# 將數據按照組織和狀態分組
groupedData <- split(x, colData(GSE6145)$group)
# 計算差異基因
design <- model.matrix(~factor(colData(GSE6145)$group))
fit <- eBayes(lmFit(x, design))
topGenes <- topTable(fit, coef=2, adjust.method="BH", sort="p", n=4000)
# 生成熱圖
ggplot(data = melt(as.matrix(x[topGenes$ENTREZID,])), aes(x = Var2, y = Var1, fill = value)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "red") +
labs(title = "基因表達譜熱圖示例", x = "樣品", y = "基因") +
theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.text = element_text(size = 8),
axis.title = element_text(size = 12, face = "bold"))
2、市場股票價格熱圖
市場股票價格熱圖是用於顯示不同股票價格的熱圖,可幫助投資者快速識別高低風險股票。下面是一個市場股票價格熱圖的例子:
# 導入數據,此處以Yahoo! Finance數據集為例
library(quantmod)
symbols <- c("AAPL", "MSFT", "GOOG", "TSLA", "AMZN")
getSymbols(symbols, from = as.Date("2021-01-01"), to = Sys.Date())
# 獲取各股票價格
prices <- do.call(merge, as.list(Cl(Ad(Ad(Ad(Ad(xts())))))))
# 獲取各股票收益率
returns <- ROC(prices, type = "discrete")
# 生成熱圖
ggplot(data = melt(returns), aes(x = Var2, y = Var1, fill = value)) +
geom_tile() +
scale_fill_gradient2(low = "green", mid = "yellow", high = "red", midpoint = 0) +
labs(title = "市場股票收益率熱圖示例", x = "日期", y = "股票") +
theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.text = element_text(size = 8),
axis.title = element_text(size = 12, face = "bold"))
五、總結
熱圖是一種非常有用的數據可視化方式,可以將矩陣數據呈現為彩色圖像,在許多領域都有廣泛的應用。在R語言中,使用ggplot2包可以輕鬆實現熱圖的生成,同時可以通過調整顏色映射、添加顏色標尺和增加標籤等方式,將熱圖發揮到最大的作用。
原創文章,作者:QSNBU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371328.html