10天學會|Python繪圖(6):4種常見的Heatmap熱圖

2021-12-28 從小愛編程
Python用於數據繪圖,或許非常簡單,不需要複雜的編程,就能利用matplotlib繪製出matlab風格的繪圖。今天,譚編給大家講解一下4種常見的heatmap熱圖Python源碼(文末有獲取方式),稍改即用。
首先我們通過以下視頻來了解:如何輕鬆修改並繪製熱圖。後續各章節可以詳細了解具體的要點、難點。對於每張圖,可以修改數據(二維數組,如下圖的harvest數組)、修改XY標籤文本(列表,如下圖綠色字體,用引號),點擊綠色三角運行按鈕,即可繪製出圖。上圖第123行是準備畫2行2列四個繪圖的,如果我們只需要畫一個圖,可以注釋掉第123行(即在123行首加#),然後去除第125行前的#,刪除本程序中其他繪圖,只保留一個圖的源碼。

圖1~圖2

通常熱圖的顏色覆蓋很廣,部分標註文本的顏色經常與色塊相近,如法分辨,這就需要定義多種字體顏色,python可以自動避開相衝的顏色。
例如annotate_heatmap()函數中的「textcolors=("red", "white")」,我們可以直接修改顏色單詞即可。

圖3~圖4

填充顏色配色在matplotlib繪圖庫中專門定義了配色名稱,我只需要修改heatmap()函數中的cmap="YlGn"引號中的配色名稱即可。
matplotlib庫提供了多種輸出文件格式,其中我們常用輸出Pdf、Svg、JPEG或Png格式。代碼如下:

lt.savefig("./figure1.jpg")
plt.savefig("./figure1.svg")
plt.savefig("./figure1.pdf")

但是運行可能會報錯,因為缺少字體,我們添加2行代碼即可消除BUG.

plt.rcParams['pdf.fonttype'] = 42
plt.rcParams['font.family'] = 'Calibri'

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

Python繪圖通常需要numpy和matplotlib這兩個外部庫。
NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。Matplotlib 是 Python 的繪圖庫。它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。它也可以和圖形工具包一起使用,如 PyQt 和 wxPython。這些外部庫需要安裝到python環境,我們編寫的程序才能運行。以Pycharm編輯器為例,安裝方法如下:

點擊菜單File-Default Settings打開對話框;

點擊左邊欄Project Interpreter,點擊右上方的「+」按鈕;

搜索「numpy」,待右邊檢索出版本後,點擊左下方的「Install Package」,等待下方出現安裝成功的提示後,再以同樣的方法安裝matplotlib;

關閉搜索窗口,回到Default Settings窗口,點擊OK。

def heatmap(data, row_labels, col_labels, ax=None,
cbar_kw={}, cbarlabel="", **kwargs)

data:一個二維數組(N,M)

row_labels:行標籤,列表或數組(長度為N)

col_labels:列標籤,列表或數組(長度為M)

ax:將熱圖繪製到的「matplotlib.axes.axes」實例。如果未提供,請使用當前軸或創建新軸。可選。

cbar_kw:帶有「matplotlib.Figure.colorbar」參數的字典。可選。

cbarlabel:色條的標籤。可選。

**kwargs:所有其他參數都指向「imshow」。

3.2.2 annotate_heatmap()函數

def annotate_heatmap(im, data=None, valfmt="{x:.2f}",
textcolors=("black", "white"),
threshold=None, **textkw):

im:要標記的軸圖像。

data用於注釋的數據。如果沒有,則使用圖像的數據。可選。

valfmt熱圖中批註的格式。這應該是使用字符串格式的方法,例如「${x:.2f}」,或者是`matplotlib.ticker.Formatter`。可選。

textcolors一對顏色。第一個用於低於閾值的值,第二個是上面提到的。可選。

threshold以數據單位表示的值,根據該值可以顯示textcolors中的顏色應用。如果沒有(默認設置),則使用顏色貼圖的中間作為分離。可選。

**kwargs所有其他參數都會轉發到對用於創建文本標籤。

def func(x, pos):
return "{:.2f}".format(x).replace("0.", ".").replace("1.00", "")

限於小數文本過長,標註色塊時經常超出色塊,可以將小數的「0.」改為「.」,例如「.12」表示「0.12」。對於「1.00」的數據,我們可以不標註,即用空字符「」。於是需用下面的替換函數。例如下圖效果:

推薦閱讀:

非常感謝您轉發、打賞、點擊在看等任何可以支持的方式!

感謝打賞

相關焦點

  • ComplexHeatmap |理解繪圖邏輯繪製熱圖
    之前熱圖三部曲介紹了使用ggplot2和pheatmp繪製熱圖R語言學習 - 熱圖繪製 (heatmap)  R語言學習 - 熱圖美化  R語言學習 - 熱圖簡化後來2017年最後學習1010個熱圖繪製方法簡略介紹了10種熱圖繪製方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。
  • 利用ComplexHeatmap繪製熱圖(一)
    之前熱圖三部曲介紹了使用ggplot2和pheatmp繪製熱圖R語言學習 - 熱圖繪製 (heatmap)  R語言學習 - 熱圖美化  R語言學習 - 熱圖簡化後來2017年最後學習1010個熱圖繪製方法簡略介紹了10種熱圖繪製方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。
  • 一招學會熱圖(heatmap)繪製之R語言heatmap函數
    寫在前面 本文介紹使用R語言內置函數heatmap()繪製熱圖。老調重彈,在了解R語言基本思維、使用方法之後,每學一個新的函數或者方法都有跡可循。一般都是先使用幫助文檔學習新函數的定義和使用方法,接著搜索測試數據進行訓練即可。文末附heatmap說明書。
  • R繪圖-heatmap
    , dendrogram='both', trace='none', margins=c(6,6), col=rev(colorRampPalette(brewer.pal(11, "RdYlGn"))(256)),density.info="none") AOA.plot註:legend.txt設置圖例內容,args.legend設置圖例位置和大小,xaxt設置橫軸坐標是否顯示,col
  • R包ComplexHeatmap繪製個性化熱圖
    ComplexHeatmap包由顧祖光博士創建,是一個非常全面的繪製熱圖的R包,可以利用它來繪製許多文獻中的美圖,例如下圖展示的16S文獻分析中的熱圖。:12)colnames(mat) = paste0("C", 1:10)一行命令繪圖使用默認參數,一行命令即可出圖#默認對行和列都進行聚類Heatmap(mat)
  • 使用ComplexHeatmap包繪製個性化熱圖
    ComplexHeatmap包由顧祖光博士創建,是一個非常全面的繪製熱圖的R包,可以利用它來繪製許多文獻中的美圖,例如下圖展示的16S文獻分析中的熱圖。這裡主要介紹一下如何用這個R包來繪製類似的個性化熱圖。檢測安裝加載包# 檢測安裝CRAN包package_list = c("circlize","grid","BiocManager")for(p in package_list){if (!
  • R語言學習 - 熱圖繪製 (heatmap)
    熱圖繪製熱圖是做分析時常用的展示方式,簡單、直觀、清晰。
  • 生信分析系列 | 輕鬆利用Python繪製基因表達熱圖
    (閱讀本文需要簡單了解python中的函數、python模組的安裝與模組的調用)文末有驚喜,免費Python信息分析培訓班送給你哦
  • complexHeatmap版本的對角線熱圖
    另外由於complexheatmap在繪製熱圖的時候,對於顏色的指定是需要用到circlize包的colorRamp2函數,所以需要提前加載。對於熱圖當中的聚類,則是基於這個數據集來進行的。同時熱圖的繪製會自動產生一個顏色的注釋,這個不是我們需要的,所以需要去掉。
  • 10天學會|Python繪圖(7):繪製3D函數圖
    今天譚編採用Python3.6演示從一個z=f(x,y)類型的公式如何創建並繪製3D函數圖。本教程入選《同一幅圖》第一期:繪製3D函數圖。文末有關於《同一幅圖》項目的策劃簡介。2. 3D函數圖像本講利用Python3.6將上述兩個公式,在同一張三維坐標系中繪出2個曲面函數圖像。3.代碼原始碼文末有下載方式。也可以複製以下代碼自行創建文件,進行調試。
  • R語言熱力圖綜合教程-heatmap、d3heatmap和ComplexHeatmap
    R包和功能很多,包括:heatmap()[R基本函數,統計數據包]:繪製一個簡單的熱圖heatmap.2()[ gplots R包]:與R base函數相比,繪製了增強的熱圖。pheatmap()[ pheatmap R包]:繪製漂亮的熱圖,並提供更多控制項來更改熱圖的外觀。d3heatmap()[ d3heatmap R包]:繪製交互式/可單擊的熱圖ComplexHeatmap R / Bioconductor的包]:繪製,注釋和排列複雜熱圖(用於基因組數據分析是非常有用的)
  • 用R做heatmap圖,附加差異表達分析代碼~
    眾所周知,R是統計分析大師,擁有大量開源的包,同時R也是一個繪圖大師,只不過它的各種參數讓小白們頭疼。
  • 超詳細的R語言熱圖之complexheatmap系列07
    本篇內容主要介紹瀑布圖的畫法,這也是各種SCI文章中常見的圖,不得不說,這個圖太強大了!complexheatmap系列第1篇:超詳細的R語言熱圖之complexheatmap系列1complexheatmap系列第2篇:超詳細的R語言熱圖之complexheatmap系列2complexheatmap系列第3篇:超詳細的R語言熱圖之complexheatmap
  • 【Python可視化6】Seaborn之heatmap熱力圖
    1sns.set_context({"figure.figsize":(8,8)})2sns.heatmap(data=data,square=True) 34可以看到右側的顏色帶最大最小值變了,而heatmap中顏色映射關係也會隨之調整,將本圖和上面的圖進行對比便一目了然。
  • 一個heatmap是如何練成的!(後附視頻解析)
    Heatmap(熱圖)大家肯定不陌生,在很多醫學、自然科學發表的重量級論文中常見其蹤影。
  • R語言學習 - 熱圖簡化
    前面推出過熱圖繪製和熱圖美化,現在來一個函數繪製熱圖的簡化方式。文後更有不用寫代碼的在線工具可用。
  • 【R語言】heatmap顯示樣本類型
    前面分了四期類型給大家講了繪製熱圖時的配色方案☞【R語言】熱圖繪製-heatmap函數+默認配色方案
  • 「繪圖,讓科學生動起來」:Python-matplotlib繪圖(專題一)python環境搭建篇
    無論您是從事這些行業的技術工作者,還是對python繪圖有濃厚興趣的發燒友,或者您的朋友或孩子想學習python繪圖,希望都能從這個專題中獲得知識,筆者也抱著學習和交流的態度,希望和大家共同成長與進步。 首先,python是什麼?python的中文翻譯為大蟒蛇,看似可怕,其實不然。這只可愛的大蟒蛇其實與不久前的聖誕節有著不解之緣。
  • python畫條形標籤圖
    python畫各種好看的圖形Python有很多可視化工具,本文推薦Matplotlib。Matplotlib是一種2D的繪圖庫,它可以支持硬拷貝和跨系統的交互,它可以在Python腳本、IPython的交互環境下、Web應用程式中使用。
  • 薦你一款heatmap作圖神器
    在CNS等頂級雜誌發表的諸多文章中,不管是複雜的統計分析還是"高大上"的制表繪圖,methods裡面總少不了R語言的身影。通過R語言輕鬆完成各種繪圖,例如:韋恩圖,熱圖,線性回歸,小提琴圖,GWAS相關曼哈頓圖,乃至三維圖,地圖,circos圈圖等等。但是R語言學起來有點難怎麼辦?今天冬至兄就是來告訴你一個熱圖神器的。