最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python繪制條形熱圖的示例代碼

 更新時(shí)間:2025年07月01日 09:20:06   作者:Code_Verse  
條形熱圖(Strip Heatmap) 就像一位魔法設(shè)計(jì)師,用色彩編碼和有序排列讓復(fù)雜數(shù)據(jù)變得清爽直觀,本文我們就來(lái)學(xué)習(xí)一下如何使用Python繪制簡(jiǎn)單的條形熱圖吧

為什么選擇條形熱圖

在科研數(shù)據(jù)分析和工程信號(hào)處理領(lǐng)域,當(dāng)我們需要同時(shí)展示多個(gè)樣本的連續(xù)變量波形時(shí),傳統(tǒng)的折線圖往往顯得雜亂無(wú)章 —— 想象一下,15 條波形曲線在同一個(gè)坐標(biāo)系里交織,是不是瞬間讓人眼花繚亂?這時(shí)候,條形熱圖(Strip Heatmap) 就像一位魔法設(shè)計(jì)師,用色彩編碼和有序排列讓復(fù)雜數(shù)據(jù)變得清爽直觀!

今天我們要分享的案例是:通過(guò)模擬帶噪聲的高斯峰值信號(hào),用 Seaborn 繪制高顏值條形熱圖,展示不同樣本的波形差異。這種可視化方法廣泛應(yīng)用于光譜分析、傳感器信號(hào)處理、生物醫(yī)學(xué)數(shù)據(jù)(如心電圖波形)等場(chǎng)景,能讓你一眼捕捉到數(shù)據(jù)的峰值位置、強(qiáng)度差異和噪聲分布~

代碼全景

先來(lái)看一段充滿 “數(shù)學(xué)美感” 的代碼,它模擬了 15 個(gè)帶隨機(jī)峰值的信號(hào),并將它們優(yōu)雅地排列成熱圖:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 生成隨機(jī)數(shù)據(jù)(核心可替換區(qū)域①)
np.random.seed(0) # 固定隨機(jī)種子,確保結(jié)果可復(fù)現(xiàn)
x = np.arange(0, 91) # X軸范圍:0到90(代表信號(hào)的連續(xù)變量,如波長(zhǎng)、時(shí)間等)
n_samples = 15 # 樣本數(shù)量,可改為你的實(shí)際樣本數(shù)
data = []
# 生成每個(gè)樣本的峰值位置(35-55之間的隨機(jī)值,可替換為真實(shí)峰值數(shù)據(jù)②)
peaks = np.random.uniform(35, 55, size=n_samples)
for p in peaks:
# 高斯函數(shù)生成峰值波形(可替換為自定義函數(shù)③,如正弦波、指數(shù)衰減等)
profile = np.exp(-(x - p)**2 / (2 * 8**2)) # 標(biāo)準(zhǔn)差8控制峰寬
noise = np.random.randn(len(x)) * 2 # 高斯噪聲,可調(diào)整噪聲強(qiáng)度④
# 信號(hào)疊加:基線10 + 峰值信號(hào)*40 + 噪聲(可修改基線和縮放因子⑤)
row = 10 + profile * 40 + noise
data.append(row)
# 創(chuàng)建數(shù)據(jù)框(核心可替換區(qū)域⑥:替換為你的真實(shí)數(shù)據(jù))
df = pd.DataFrame(data, columns=x) # columns對(duì)應(yīng)X軸變量,如波長(zhǎng)、時(shí)間點(diǎn)
labels = [f"Samp {chr(ord('A')+i)}" for i in range(n_samples)] # 樣本標(biāo)簽
df.index = labels # 設(shè)置行名為樣本標(biāo)簽
# 繪制條形熱圖(可視化參數(shù)可靈活調(diào)整⑦)
plt.figure(figsize=(12, 6)) # 調(diào)整畫(huà)布大小
sns.heatmap(
df.iloc[::-1], # 反轉(zhuǎn)行順序,讓第一個(gè)樣本顯示在頂部
cmap="coolwarm", # 藍(lán)-紅發(fā)散色階,適合顯示有基線的信號(hào)
vmin=0, vmax=50, # 固定顏色范圍,確保不同數(shù)據(jù)對(duì)比一致
cbar=True, # 顯示顏色條
linewidths=0.5, # 樣本間添加白色分隔線
linecolor='white' # 分隔線顏色
)
plt.title("條形熱圖:帶噪聲的高斯峰值信號(hào)", fontsize=16, pad=20)
plt.xlabel("K (w) (可替換為實(shí)際變量名,如波長(zhǎng)/nm、時(shí)間/ms)", fontsize=14)
plt.ylabel("樣本", fontsize=14)
# 定制X軸刻度:每10個(gè)單位顯示一個(gè)刻度
plt.xticks(np.arange(0, len(x), 10), np.arange(0, len(x), 10))
# 定制Y軸標(biāo)簽:反轉(zhuǎn)順序并取消旋轉(zhuǎn),讓標(biāo)簽水平顯示
plt.yticks(np.arange(len(labels)) + 0.5, labels[::-1], rotation=0)
plt.tight_layout() # 自動(dòng)調(diào)整布局,避免標(biāo)簽重疊
plt.show()

效果如下

代碼逐行解析

1.數(shù)據(jù)生成:打造帶峰值的模擬信號(hào)(核心可替換區(qū))

① X 軸范圍與樣本數(shù)量

x = np.arange(0, 91)定義了信號(hào)的連續(xù)變量,比如這里模擬的是 0-90 的 “K (w)” 變量(實(shí)際可替換為波長(zhǎng)、時(shí)間、溫度等)。n_samples是樣本數(shù)量,直接改為你的實(shí)際樣本數(shù),比如 30 個(gè)傳感器數(shù)據(jù)。

② 峰值位置定制

peaks = np.random.uniform(35, 55, size=n_samples)生成 35-55 之間的隨機(jī)峰值位置。如果有真實(shí)峰值數(shù)據(jù),直接替換為列表或數(shù)組,例如:

peaks = [40.2, 52.1, 38.5, ...] # 你的真實(shí)峰值位置

③ 波形函數(shù)替換

目前用高斯函數(shù)np.exp(-(x - p)**2 / (2 * 8**2))生成鐘形曲線,你可以換成任何自定義函數(shù)!比如:

正弦波:np.sin(x * 0.1 + p)(模擬周期性信號(hào))

指數(shù)衰減:np.exp(-(x - p)/10)(模擬衰減信號(hào))

階梯函數(shù):np.where(x > p, 1, 0)(模擬開(kāi)關(guān)信號(hào))

④ 噪聲調(diào)整

np.random.randn(len(x)) * 2控制噪聲強(qiáng)度,*2是標(biāo)準(zhǔn)差。想讓信號(hào)更 “干凈”?改成*1;想突出噪聲?試試*5~

⑤ 信號(hào)縮放與基線

10 + profile * 40 + noise中,10是基線(信號(hào)最小值),*40是峰值縮放因子。根據(jù)真實(shí)數(shù)據(jù)范圍調(diào)整這兩個(gè)值,比如基線改為 20,縮放因子改為 30。

2.數(shù)據(jù)結(jié)構(gòu)化:用 Pandas 構(gòu)建表格(零代碼替換區(qū))

⑥ 替換真實(shí)數(shù)據(jù)

如果你有現(xiàn)成的 CSV 數(shù)據(jù),直接用pd.read_csv('你的數(shù)據(jù).csv')讀取,確保列是 X 軸變量(如波長(zhǎng)點(diǎn)),行是樣本,然后跳過(guò)data生成步驟。例如:

df = pd.read_csv('sensor_data.csv', index_col=0) # index_col=0假設(shè)第一列為樣本標(biāo)簽

3.可視化魔法:Seaborn 熱圖的 “美顏秘籍”

⑦ 熱圖參數(shù)調(diào)優(yōu)

cmap="coolwarm":藍(lán) - 紅配色適合顯示有基線的信號(hào),冷色代表低值,暖色代表高值。換成"viridis"(綠 - 黃 - 紅)或"magma"(黑 - 紅 - 黃)會(huì)有不同效果~

vmin=0, vmax=50:固定顏色映射范圍,避免不同數(shù)據(jù)導(dǎo)致色階變化,確??鐖D對(duì)比一致。如果數(shù)據(jù)范圍是 10-60,就改為vmin=10, vmax=60。

linewidths=0.5, linecolor='white':在樣本間添加細(xì)白分隔線,讓每個(gè)條形更清晰,就像給數(shù)據(jù) “穿上整齊的格子衫”~

df.iloc[::-1]:反轉(zhuǎn)行順序,讓第一個(gè)樣本顯示在熱圖頂部(默認(rèn)是底部),符合從 “上到下” 的閱讀習(xí)慣。

個(gè)性化改造

場(chǎng)景一:我的數(shù)據(jù)不是高斯峰值,是真實(shí)傳感器波形怎么辦

直接替換信號(hào)生成部分!假設(shè)你有一批心電圖(ECG)數(shù)據(jù),每個(gè)樣本是 500 個(gè)時(shí)間點(diǎn)的電壓值:

  • 刪除peaks和循環(huán)生成profile的代碼
  • 用pd.read_csv讀取 CSV 文件,確保每行是一個(gè)樣本,每列是時(shí)間點(diǎn)
  • 跳過(guò)噪聲生成(如果數(shù)據(jù)已含噪聲)或添加自定義噪聲

場(chǎng)景二:想換一種更專業(yè)的配色方案

Seaborn 提供了超多色階,試試這些組合:

  • 科研論文常用:cmap="rocket"(藍(lán) - 黃 - 紅,適合單峰數(shù)據(jù))、cmap="bwr"(藍(lán) - 白 - 紅,突出基線對(duì)稱數(shù)據(jù))
  • 高對(duì)比度模式:cmap="coolwarm_r"(反轉(zhuǎn)色階,讓高值顯示為藍(lán)色)
  • 漸變色推薦:搭配vmin和vmax使用,比如光譜數(shù)據(jù)用cmap="hsv",呈現(xiàn)彩虹色漸變~

場(chǎng)景三:樣本標(biāo)簽太多,Y 軸標(biāo)簽擠在一起

三大解決方案來(lái)襲:

縮小字體:plt.yticks(..., fontsize=10)

截?cái)鄻?biāo)簽:用縮寫(xiě)(如 “Samp A”→“A”),或生成標(biāo)簽時(shí)用簡(jiǎn)寫(xiě):

labels = [f"A{i}" for i in range(n_samples)] # 生成A0, A1, ..., A14

旋轉(zhuǎn)標(biāo)簽:如果必須顯示全稱,嘗試輕微旋轉(zhuǎn):

plt.yticks(..., rotation=15) # 15度傾斜,更易閱讀

擴(kuò)展應(yīng)用

生物醫(yī)學(xué):心電圖波形對(duì)比

X 軸:時(shí)間(ms),Y 軸:不同患者,顏色:電壓(μV)

應(yīng)用:快速識(shí)別異常波形(如峰值偏移、節(jié)律異常),比單獨(dú)看折線圖清晰 10 倍!

材料科學(xué):光譜吸收曲線

X 軸:波長(zhǎng)(nm),Y 軸:不同薄膜樣品,顏色:吸光度

應(yīng)用:對(duì)比材料的特征吸收峰位置和強(qiáng)度,一鍵定位最佳制備工藝~

工程信號(hào):傳感器陣列數(shù)據(jù)

X 軸:頻率(Hz),Y 軸:不同傳感器節(jié)點(diǎn),顏色:信號(hào)強(qiáng)度

應(yīng)用:監(jiān)測(cè)設(shè)備振動(dòng)信號(hào),快速定位異常頻率的傳感器節(jié)點(diǎn)~

關(guān)鍵可替換點(diǎn)總結(jié)

替換場(chǎng)景代碼位置示例操作
X 軸變量名稱x = np.arange(0, 91)改為x = np.linspace(200, 800, 301)(波長(zhǎng) 200-800nm,301 個(gè)點(diǎn))
樣本數(shù)量n_samples = 15改為n_samples = 30(30 個(gè)樣本)
峰值位置(真實(shí)數(shù)據(jù))peaks = np.random...改為peaks = [45.2, 50.1, 38.7](手動(dòng)輸入峰值)
波形函數(shù)profile = np.exp(...)改為profile = np.sin(x*0.05)(正弦波)
導(dǎo)入真實(shí)數(shù)據(jù)df = pd.DataFrame(data...)改為df = pd.read_excel('你的數(shù)據(jù).xlsx', index_col=0)
顏色映射cmap="coolwarm"改為cmap="viridis"(綠 - 黃 - 紅漸變)

總結(jié)

通過(guò)這篇攻略,我們掌握了從信號(hào)生成到熱圖繪制的全流程,更重要的是學(xué)會(huì)了如何將代碼適配到真實(shí)場(chǎng)景。條形熱圖的核心優(yōu)勢(shì)在于:

  • 有序排列:樣本按行排列,避免折線圖的重疊混亂
  • 色彩編碼:用顏色深淺直觀展示數(shù)值大小,比數(shù)字表格更易捕捉規(guī)律
  • 細(xì)節(jié)可控:從色階到分隔線,每個(gè)像素都能定制,滿足論文、報(bào)告、PPT 的不同需求

現(xiàn)在,你只需替換代碼中的6 處核心區(qū)域(數(shù)據(jù)生成、數(shù)據(jù)框、可視化參數(shù)),就能將這段代碼變成你的專屬可視化工具~

到此這篇關(guān)于Python繪制條形熱圖的示例代碼的文章就介紹到這了,更多相關(guān)Python條形熱圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 安裝pycurl報(bào)錯(cuò)Could not run curl-config: 'curl-config'

    安裝pycurl報(bào)錯(cuò)Could not run curl-config: &ap

    這篇文章主要為大家介紹了安裝pycurl報(bào)錯(cuò)Could not run curl-config: 'curl-config'解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Python辦公自動(dòng)化的7大常用庫(kù)使用新手指南

    Python辦公自動(dòng)化的7大常用庫(kù)使用新手指南

    Python作為一門(mén)功能強(qiáng)大且易學(xué)易用的編程語(yǔ)言,能幫助我們告別這些重復(fù)勞動(dòng),實(shí)現(xiàn)辦公自動(dòng)化,極大地提高工作效率和準(zhǔn)確性,本文會(huì)為你系統(tǒng)地介紹Python在辦公自動(dòng)化領(lǐng)域最常用的幾個(gè)庫(kù),希望對(duì)大家有所幫助
    2025-12-12
  • Python MD5加密實(shí)例詳解

    Python MD5加密實(shí)例詳解

    這篇文章主要介紹了Python MD5加密實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)方法及實(shí)例,需要的朋友可以參考下
    2017-08-08
  • 詳解python關(guān)于多級(jí)包之間的引用問(wèn)題

    詳解python關(guān)于多級(jí)包之間的引用問(wèn)題

    本文主要介紹了python關(guān)于多級(jí)包之間的引用問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 跟老齊學(xué)Python之用Python計(jì)算

    跟老齊學(xué)Python之用Python計(jì)算

    做為零基礎(chǔ)學(xué)習(xí)Python,也就從計(jì)算小學(xué)數(shù)學(xué)題目開(kāi)始吧。因?yàn)閺倪@里開(kāi)始,數(shù)學(xué)的基礎(chǔ)知識(shí)列為肯定過(guò)關(guān)了。
    2014-09-09
  • mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab)

    mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab)

    這篇文章主要介紹了mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi)

    使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi)

    這篇文章主要介紹了使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 如何用值獲取Python字典的鍵問(wèn)題

    如何用值獲取Python字典的鍵問(wèn)題

    這篇文章主要介紹了如何用值獲取Python字典的鍵問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn)

    深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn)

    這篇文章主要介紹了深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 關(guān)于adfuller函數(shù)返回值的參數(shù)說(shuō)明與記錄

    關(guān)于adfuller函數(shù)返回值的參數(shù)說(shuō)明與記錄

    這篇文章主要介紹了關(guān)于adfuller函數(shù)返回值的參數(shù)說(shuō)明與記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論

久治县| 壶关县| 淮安市| 恩平市| 大关县| 屯昌县| 黎平县| 赤壁市| 分宜县| 申扎县| 南澳县| 柳河县| 罗山县| 安平县| 祁东县| 佛学| 绥阳县| 余姚市| 沙雅县| 枝江市| 定南县| 安乡县| 乌鲁木齐县| 麻江县| 遂川县| 新泰市| 昌乐县| 高要市| 厦门市| 兴仁县| 南宁市| 安泽县| 集安市| 崇明县| 神农架林区| 濮阳市| 上蔡县| 沅江市| 汾西县| 资阳市| 济南市|