使用Python制作氣泡熱圖的示例代碼
在數(shù)據(jù)分析和可視化中,氣泡熱圖是一種非常直觀的工具,可以展示數(shù)據(jù)之間的關(guān)系和強(qiáng)度。今天,我將帶你一步步學(xué)會如何用Python制作一個氣泡熱圖。別擔(dān)心,我會用最簡單的方式解釋每一個步驟,即使你沒有編程基礎(chǔ)也能輕松上手!
一、什么是氣泡熱圖
氣泡熱圖是一種結(jié)合了氣泡圖和熱圖特點的可視化圖表。它通過氣泡的大小和顏色來表示數(shù)據(jù)的強(qiáng)度,同時通過位置來展示數(shù)據(jù)的分類或分組。這種圖表非常適合展示多個變量之間的關(guān)系,例如不同樣本之間的某種屬性強(qiáng)度。
二、我們需要什么樣的數(shù)據(jù)
在制作氣泡熱圖之前,我們需要準(zhǔn)備以下類型的數(shù)據(jù):
兩個分類變量:這兩個變量將決定氣泡的位置。例如,X軸可以是一個分類變量(如不同的類別或分組),Y軸是另一個分類變量。
一個數(shù)值變量:這個變量決定了氣泡的大小和顏色,通常表示某種強(qiáng)度或值的大小。
在我們的代碼示例中,我們用的是隨機(jī)生成的數(shù)據(jù),但如果你有自己的數(shù)據(jù),可以按照類似的結(jié)構(gòu)準(zhǔn)備。比如:
- X軸:1到10的類別(可以是任何分組)。
- Y軸:1到10的樣本(也可以是其他分組)。
- 每個氣泡的大小和顏色由一個10×10的矩陣決定,矩陣中的每個值表示氣泡的強(qiáng)度。
三、開始制作氣泡熱圖
1. 安裝必要的庫
在開始之前,我們需要安裝兩個Python庫:numpy和matplotlib。這兩個庫分別用于處理數(shù)據(jù)和繪圖。
如果你還沒有安裝,可以通過以下命令安裝:
pip install numpy matplotlib
2. 準(zhǔn)備代碼
接下來,我們來看看代碼的每一步。
(1)導(dǎo)入庫
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是一個10×10的矩陣,表示每個氣泡的強(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)
確保氣泡對齊在格子內(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() # 顯示圖形
四、運行代碼,查看結(jié)果
將上述代碼復(fù)制到你的Python環(huán)境中,運行后你將看到一個漂亮的氣泡熱圖!你可以嘗試修改數(shù)據(jù)或顏色映射,看看會發(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)軸刻度,確保氣泡對齊在格子內(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)整布局,確保圖形無多余空白并完整顯示
plt.tight_layout(pad=0.1) # 適當(dāng)減小邊緣空白
# 顯示圖形
plt.show()五、總結(jié)
通過今天的教程,我們學(xué)會了如何用Python制作氣泡熱圖。只要準(zhǔn)備好合適的分類變量和數(shù)值變量,就可以輕松生成這種直觀的圖表。希望你能用這個技能來展示你的數(shù)據(jù)!
到此這篇關(guān)于使用Python制作氣泡熱圖的示例代碼的文章就介紹到這了,更多相關(guān)Python氣泡熱圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
完美解決python中ndarray 默認(rèn)用科學(xué)計數(shù)法顯示的問題
今天小編就為大家分享一篇完美解決python中ndarray 默認(rèn)用科學(xué)計數(shù)法顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Pandas對數(shù)值進(jìn)行分箱操作的4種方法總結(jié)
分箱是一種常見的數(shù)據(jù)預(yù)處理技術(shù)有時也被稱為分桶或離散化,他可用于將連續(xù)數(shù)據(jù)的間隔分組到“箱”或“桶”中。本文將使用python?Pandas庫對數(shù)值進(jìn)行分箱的4種方法,感興趣的可以了解一下2022-05-05
python?requests.post請求404問題及解決方法
這篇文章主要介紹了python?requests.post請求404問題,這里需要根據(jù)自己實際情況來分析當(dāng)前接口接收數(shù)據(jù)時使用的是什么格式,但目前一般的網(wǎng)站都開始采用application/jsond的數(shù)據(jù)格式,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Python將字符串轉(zhuǎn)換為datetime對象的五種方法
在Python編程中,我們經(jīng)常會遇到需要將字符串形式的日期和時間轉(zhuǎn)換為datetime對象的情況,例如,從文件、數(shù)據(jù)庫或網(wǎng)絡(luò)接口中獲取的數(shù)據(jù)通常是以字符串形式存在的,使用datetime對象會更加方便,所以本文給大家總結(jié)Python將字符串轉(zhuǎn)換為datetime對象的五種方法2025-07-07
Python實現(xiàn)APP自動化發(fā)微信群消息的示例代碼
本文主要介紹了Python實現(xiàn)APP自動化發(fā)微信群消息的示例代,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下碼2022-01-01
pycharm創(chuàng)建scrapy項目教程及遇到的坑解析
這篇文章主要介紹了pycharm創(chuàng)建scrapy項目教程及遇到的坑解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08

