使用Python制作氣泡熱圖的示例代碼
在數(shù)據(jù)分析和可視化中,氣泡熱圖是一種非常直觀的工具,可以展示數(shù)據(jù)之間的關(guān)系和強(qiáng)度。今天,我將帶你一步步學(xué)會(huì)如何用Python制作一個(gè)氣泡熱圖。別擔(dān)心,我會(huì)用最簡(jiǎn)單的方式解釋每一個(gè)步驟,即使你沒有編程基礎(chǔ)也能輕松上手!
一、什么是氣泡熱圖
氣泡熱圖是一種結(jié)合了氣泡圖和熱圖特點(diǎn)的可視化圖表。它通過氣泡的大小和顏色來(lái)表示數(shù)據(jù)的強(qiáng)度,同時(shí)通過位置來(lái)展示數(shù)據(jù)的分類或分組。這種圖表非常適合展示多個(gè)變量之間的關(guān)系,例如不同樣本之間的某種屬性強(qiáng)度。
二、我們需要什么樣的數(shù)據(jù)
在制作氣泡熱圖之前,我們需要準(zhǔn)備以下類型的數(shù)據(jù):
兩個(gè)分類變量:這兩個(gè)變量將決定氣泡的位置。例如,X軸可以是一個(gè)分類變量(如不同的類別或分組),Y軸是另一個(gè)分類變量。
一個(gè)數(shù)值變量:這個(gè)變量決定了氣泡的大小和顏色,通常表示某種強(qiáng)度或值的大小。
在我們的代碼示例中,我們用的是隨機(jī)生成的數(shù)據(jù),但如果你有自己的數(shù)據(jù),可以按照類似的結(jié)構(gòu)準(zhǔn)備。比如:
- X軸:1到10的類別(可以是任何分組)。
- Y軸:1到10的樣本(也可以是其他分組)。
- 每個(gè)氣泡的大小和顏色由一個(gè)10×10的矩陣決定,矩陣中的每個(gè)值表示氣泡的強(qiáng)度。
三、開始制作氣泡熱圖
1. 安裝必要的庫(kù)
在開始之前,我們需要安裝兩個(gè)Python庫(kù):numpy和matplotlib。這兩個(gè)庫(kù)分別用于處理數(shù)據(jù)和繪圖。
如果你還沒有安裝,可以通過以下命令安裝:
pip install numpy matplotlib
2. 準(zhǔn)備代碼
接下來(lái),我們來(lái)看看代碼的每一步。
(1)導(dǎo)入庫(kù)
import numpy as np import matplotlib.pyplot as plt
numpy用于處理數(shù)據(jù),比如生成網(wǎng)格和隨機(jī)數(shù)。matplotlib.pyplot用于繪圖。
(2)創(chuàng)建示例數(shù)據(jù)
K = np.arange(1, 11) # X軸的分類變量 Samples = np.arange(1, 11) # Y軸的分類變量 X, Y = np.meshgrid(K - 0.5, Samples - 0.5) # 氣泡中心位于格子中心 Z = np.random.rand(10, 10) # 隨機(jī)生成的強(qiáng)度數(shù)據(jù)
K和Samples分別是X軸和Y軸的分類變量。X, Y是通過meshgrid生成的網(wǎng)格,用于確定氣泡的中心位置。Z是一個(gè)10×10的矩陣,表示每個(gè)氣泡的強(qiáng)度(隨機(jī)生成的)。
(3)設(shè)置氣泡大小
max_bubble_diameter = 0.8 # 最大氣泡直徑 bubble_sizes = Z * max_bubble_diameter**2 * 800 # 調(diào)整大小比例因子
氣泡的大小與Z成正比,但最大直徑被限制為0.8,以避免氣泡之間重疊。
(4)繪制氣泡圖
plt.figure(figsize=(10, 8)) # 設(shè)置圖形大小 scatter = plt.scatter(X, Y, s=bubble_sizes, c=Z, cmap='viridis', alpha=0.7, edgecolors="black", linewidth=1)
- 使用
scatter繪制氣泡圖。 s參數(shù)設(shè)置氣泡大小。c參數(shù)設(shè)置氣泡顏色,顏色由Z決定。cmap='viridis'設(shè)置了顏色映射,你可以換成其他顏色映射(如'plasma'或'coolwarm')。alpha是透明度,edgecolors和linewidth設(shè)置了氣泡的邊框顏色和寬度。
(5)添加顏色條
cbar = plt.colorbar(scatter)
cbar.set_label('Bubble Intensity', fontsize=12)顏色條可以幫助我們理解氣泡顏色的含義。
(6)設(shè)置標(biāo)題和標(biāo)簽
plt.title("Bubble Heatmap Plot", fontsize=18, fontweight='bold')
plt.xlabel("K (w)", fontsize=14)
plt.ylabel("Samples", fontsize=14)標(biāo)題和坐標(biāo)軸標(biāo)簽讓圖表更清晰。
(7)設(shè)置坐標(biāo)軸刻度和范圍
plt.xticks(K, fontsize=12) plt.yticks(Samples, fontsize=12) plt.xlim(0, 10) plt.ylim(0, 10)
確保氣泡對(duì)齊在格子內(nèi),避免被切割。
(8)添加網(wǎng)格
plt.grid(True, which='both', axis='both', linestyle='-', linewidth=1, color='black')
網(wǎng)格可以幫助我們更好地理解氣泡的位置。
(9)調(diào)整布局并顯示圖形
plt.tight_layout(pad=0.1) # 調(diào)整布局 plt.show() # 顯示圖形
四、運(yùn)行代碼,查看結(jié)果
將上述代碼復(fù)制到你的Python環(huán)境中,運(yùn)行后你將看到一個(gè)漂亮的氣泡熱圖!你可以嘗試修改數(shù)據(jù)或顏色映射,看看會(huì)發(fā)生什么變化。

完整代碼如下:
import numpy as np
import matplotlib.pyplot as plt
# 創(chuàng)建示例數(shù)據(jù)
K = np.arange(1, 11)
Samples = np.arange(1, 11)
X, Y = np.meshgrid(K - 0.5, Samples - 0.5) # 氣泡中心位于格子中心
Z = np.random.rand(10, 10)
# 設(shè)置氣泡大小,大小與數(shù)據(jù)Z成正比,但限制最大直徑為0.8
max_bubble_diameter = 0.8 # 最大氣泡直徑
bubble_sizes = Z * max_bubble_diameter**2 * 800 # 調(diào)整大小比例因子以適應(yīng)最大直徑限制
# 創(chuàng)建氣泡圖
plt.figure(figsize=(10, 8))
# 繪制氣泡圖,使用 'viridis' 色系
scatter = plt.scatter(X, Y, s=bubble_sizes, c=Z, cmap='viridis', alpha=0.7, edgecolors="black", linewidth=1)
# 添加顏色條
cbar = plt.colorbar(scatter)
cbar.set_label('Bubble Intensity', fontsize=12)
# 設(shè)置標(biāo)題和標(biāo)簽
plt.title("Bubble Heatmap Plot", fontsize=18, fontweight='bold')
plt.xlabel("K (w)", fontsize=14)
plt.ylabel("Samples", fontsize=14)
# 設(shè)置坐標(biāo)軸刻度,確保氣泡對(duì)齊在格子內(nèi)
plt.xticks(K, fontsize=12)
plt.yticks(Samples, fontsize=12)
# 添加網(wǎng)格,清晰展示格子邊框
plt.grid(True, which='both', axis='both', linestyle='-', linewidth=1, color='black')
# 設(shè)置坐標(biāo)軸范圍,使氣泡顯示在格子內(nèi),避免氣泡被切割
plt.xlim(0, 10)
plt.ylim(0, 10)
# 調(diào)整布局,確保圖形無(wú)多余空白并完整顯示
plt.tight_layout(pad=0.1) # 適當(dāng)減小邊緣空白
# 顯示圖形
plt.show()五、總結(jié)
通過今天的教程,我們學(xué)會(huì)了如何用Python制作氣泡熱圖。只要準(zhǔn)備好合適的分類變量和數(shù)值變量,就可以輕松生成這種直觀的圖表。希望你能用這個(gè)技能來(lái)展示你的數(shù)據(jù)!
到此這篇關(guān)于使用Python制作氣泡熱圖的示例代碼的文章就介紹到這了,更多相關(guān)Python氣泡熱圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python一行代碼快速實(shí)現(xiàn)程序進(jìn)度條示例
這篇文章主要為大家介紹了Python一行代碼快速實(shí)現(xiàn)程序進(jìn)度條示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
利用Python如何將數(shù)據(jù)寫到CSV文件中
在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中。下面這篇文章主要給大家介紹了關(guān)于利用Python如何將數(shù)據(jù)寫到CSV文件中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-06-06
python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼
今天小編就為大家分享一篇python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
python引入導(dǎo)入自定義模塊和外部文件的實(shí)例
下面小編就為大家?guī)?lái)一篇python引入導(dǎo)入自定義模塊和外部文件的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-07-07
從安裝到精通詳解Python包管理神器pip完全指南(小白友好版)
本文是一篇Python包管理工具pip的全面指南,從基礎(chǔ)到進(jìn)階介紹了pip的核心功能和使用技巧,全文采用通俗易懂的語(yǔ)言,適合Python初學(xué)者,快跟隨小編一起學(xué)習(xí)一下吧2026-03-03
給我一面國(guó)旗 python幫你實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Python之給我一面國(guó)旗的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Python中常用數(shù)據(jù)類型使用示例概括總結(jié)
這篇文章主要為大家介紹了Python中常用數(shù)據(jù)類型使用示例概括總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python K最近鄰從原理到實(shí)現(xiàn)的方法
這篇文章主要介紹了Python K最近鄰從原理到實(shí)現(xiàn)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

