要用熱圖還是堆疊柱狀圖呈現樣本的細菌群落組成?
雖然熱圖和堆疊柱狀圖皆能用以描述各樣本的組成,但是兩圖區分數量的策略不同:熱圖以色彩區分數量,而堆疊柱狀圖則以面積區分數量。策略差異導致兩種圖適用的特徵尺度不一,熱圖適合比較大量特徵和樣本的組成差異,堆疊柱狀圖則適合比較少數特徵和樣本的組成差異。
例如數量龐大的 OTUs 適合用熱圖呈現,因為
- 堆疊柱狀圖以色彩標示類別,所以可用顏色數限制了可呈現的特徵數量
- 有限的空間內無法完整呈現所有的 OTUs
- 條帶過於密集以至於難以比較不同 OTUs 數量
例如至於項目數較少的 Phylum 則可用堆疊柱狀圖呈現,因為熱圖顏色僅能呈現數量的排序,不易呈現差異的比例,熱圖不易呈現不同特徵間的差異。如果樣本中涵蓋未能註解的細菌,讀者也能一目瞭然這些細菌的比例。
描述樣本組成通常是為了判斷特徵的組間差異和樣本的批次效應。判斷組間差異可以合併同組樣本的數據,計算特徵於所有樣本的總量。合併的堆疊柱狀圖有助於數據解讀,因為組內變異會在合併過程中消弭,而且圖中要判讀的柱和條帶也減少了。
由於沒有呈現組內變異,合併的堆疊柱狀圖可能被認為會誤導人。然而,我認為合併的堆疊柱狀圖的目標是呈現組間差異,所以檢討組內變異是非戰之罪。一項特徵在合併的堆疊柱狀圖中有較高的相對數量有:高相對豐度或高出現率,換句話說,合併的堆疊柱狀圖同時考量了相對豐度和出現率,呈現特徵差異的幅度和可靠性。
而呈現樣本的批次效應則要配合層次聚類,呈現各個樣本的數據。具體的做法是先層次聚類樣本,再繪製柱狀圖,並依照層次聚類的結果排序,接著取得層次聚類的距離數據繪製樹狀圖,最後拼接兩圖。
若使用 R 的話,熱圖有 pheatmap 可以輕鬆完成這項任務,要繪製樹狀圖也有 ggtree 等既有套件。以前我偏好基於ggplot2的方法,即添加 geom_segment 繪製樹狀圖,讓圖表有比較多調整空間(雖然調整比較繁瑣)。
不過現在 AI 工具普及,有繪圖套件的基礎知識後可以大幅節省調整時間。因此,現在我甚至會選擇 baseR 來繪圖,降低軟體對不同套件的依賴,改善程式碼的可重現性。
除了層次聚類,如果能添加多樣性柱狀圖也有助於解讀數據。因為多樣性指標不易解讀,柱狀圖能輔助讀者了解多樣性指標差異究竟體現於何處。我還沒有討論美化或圖表的附加元素,不知道要怎麼做才能有效標記各樣本所屬的組別,而不會跟堆疊柱狀圖的顏色混淆,這可能要用額外的圖標來呈現,避免讀者因為過多顏色而眼花撩亂。
然而,如果想傳達的資訊已經多到難以解讀,可能要考慮篩選資訊或是調整呈現方式,而非在既有圖表上添加更多標記。