Teknologian jakaminen

Tutustu Matplotlibiin – piirrä lämpökarttoja

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Esittely

Lämpökartat ovat tehokas tapa näyttää matriisitiedot värikartoituksen avulla. Matplotlibimshow Funktiot ovat tehokas työkalu erilaisten lämpökarttojen luomiseen. Ennen kuin aloitamme esimerkin, ymmärrämme ensin tärkeimmät parametrit:

  • data:Piirrettävä matriisidata.
  • cmap:Värikartoitus määrittää värien jakautumisen lämpökartassa.
  • interpolointi:Interpolointimenetelmä, joka vaikuttaa lämpökartan tasaisuuteen.
  • vmin ja vmax:Määritä värikartan vähimmäis- ja enimmäisarvot.

2. Peruslämpökartta

Piirretään ensin peruslämpökartta, joka näyttää tietojoukon yleisen jakautumisen:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. data = np.random.random((10, 10)) # 生成随机矩阵数据
  4. plt.imshow(data, cmap='viridis', interpolation='nearest')
  5. plt.colorbar()
  6. plt.title('基本热力图')
  7. plt.show()

Tässä yksinkertaisessa esimerkissä käytämmeviridisvärikartta janearestinterpolointimenetelmä.

kuva-20240204002238552

3. Mukautettu värikartoitus

Matplotlib tukee useita sisäänrakennettuja värikarttoja, mutta voimme myös mukauttaa värikartan tehdäksemme lämpökartasta yksilöllisemmän. Tässä on esimerkki mukautetusta värikartasta:

  1. custom_cmap = plt.cm.get_cmap('coolwarm', 5) # 从'coolwarm'中选择5个颜色
  2. plt.imshow(data, cmap=custom_cmap, interpolation='bilinear')
  3. plt.colorbar()
  4. plt.title('自定义颜色映射')
  5. plt.show()

4. Lisää kommentteja

Merkintöjen lisääminen lämpökarttaan voi selvemmin välittää tiedon merkityksen.voimme käyttääannotateToiminto merkitsee arvot lämpökartalle:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='plasma', interpolation='bicubic')
  3. for i in range(len(data)):
  4. for j in range(len(data[i])):
  5. text = ax.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='w')
  6. plt.colorbar(im)
  7. plt.title('带有注释的热力图')
  8. plt.show()

5. Erimuotoiset lämpökartat

Matplotlib tukee myös erimuotoisten lämpökarttojen, kuten ympyrän tai elliptisten pisteiden, piirtämistä. Tässä on esimerkki:

  1. from matplotlib.patches import Ellipse
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='YlGnBu', interpolation='bicubic')
  4. # 添加椭圆形状的点
  5. for i in range(len(data)):
  6. for j in range(len(data[i])):
  7. ellipse = Ellipse((j, i), 0.8, 0.8, edgecolor='w', facecolor='none')
  8. ax.add_patch(ellipse)
  9. plt.colorbar(im)
  10. plt.title('不同形状的热力图')
  11. plt.show()

6. Estä lämpökartta

Joskus haluamme korostaa tiettyjä lohkoja matriisissa tehdäksemme tärkeimmistä tiedoista näkyvämpiä.Voimme tehdä tämän käyttämälläimshow/extentParametrit tämän saavuttamiseksi:

  1. fig, ax = plt.subplots()
  2. block_data = np.random.random((5, 5)) # 生成块状数据
  3. ax.imshow(block_data, cmap='Reds', interpolation='nearest', extent=[2, 7, 2, 7])
  4. plt.colorbar()
  5. plt.title('分块热力图')
  6. plt.show()

kuva-20240204002304491

7. Usean osakuvaajan lämpökartta

Joissakin tapauksissa saatamme joutua näyttämään useita lämpökarttoja samassa kaaviossa, jotta voimme vertailla tai esittää tietojen eri näkökohtia.Tämä voidaan tehdä Matplotlibin kauttasubplotsuorittaa:

  1. fig, axs = plt.subplots(1, 2, figsize=(10, 4)) # 一行两列的子图
  2. # 第一个子图
  3. axs[0].imshow(data, cmap='Blues', interpolation='nearest')
  4. axs[0].set_title('子图1')
  5. # 第二个子图
  6. axs[1].imshow(data.T, cmap='Oranges', interpolation='bicubic') # 转置数据以展示不同热力图
  7. axs[1].set_title('子图2')
  8. plt.show()

8. 3D lämpökartta

Matplotlib tukee myös 3D-lämpökarttojen piirtämistä, mikä on erittäin hyödyllistä kolmiulotteisen rakenteen datan näyttämiseen:

  1. from mpl_toolkits.mplot3d import Axes3D
  2. fig = plt.figure(figsize=(8, 6))
  3. ax = fig.add_subplot(111, projection='3d')
  4. x, y = np.meshgrid(range(len(data)), range(len(data)))
  5. ax.plot_surface(x, y, data, cmap='viridis')
  6. ax.set_title('3D热力图')
  7. plt.show()

9. Värikartoituksen ja väripalkin lisäasetukset

Matplotlib mahdollistaa värikarttojen ja väripalkkien lisäasetusten tutkimisen monimutkaisempien tarpeiden täyttämiseksi. Tässä on esimerkki väripalkin mukauttamisesta ja väripalkin otsikoiden lisäämisestä:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. # 自定义颜色栏
  4. cbar = plt.colorbar(im, ax=ax, fraction=0.046, pad=0.04)
  5. cbar.set_label('数据值', rotation=270, labelpad=15)
  6. plt.title('高级颜色栏设置')
  7. plt.show()

kuva-20240204002506344

10. Dynaaminen lämpökartan näyttö

Joskus haluamme näyttää tietojen muutokset dynaamisesti, mikä voidaan tehdä käyttämällä MatplotlibiäFuncAnimation saavuttaa. Seuraava on yksinkertainen esimerkki dynaamisesta lämpökartasta:

  1. from matplotlib.animation import FuncAnimation
  2. fig, ax = plt.subplots()
  3. data_frames = [np.random.random((10, 10)) for _ in range(10)] # 生成多帧数据
  4. def update(frame):
  5. ax.clear()
  6. im = ax.imshow(data_frames[frame], cmap='Blues', interpolation='nearest')
  7. plt.title(f'动态热力图 - 帧 {frame}')
  8. ani = FuncAnimation(fig, update, frames=len(data_frames), interval=500, repeat=False)
  9. plt.show()

11. Lämpökarttojen vuorovaikutus

Voit tehdä lämpökartasta interaktiivisemman käyttämällä MatplotlibiäimshowyhdistäämplcursorsKirjasto toteuttaa datapisteiden hiirinäytön:

  1. import mplcursors
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='Greens', interpolation='nearest')
  4. mplcursors.cursor(hover=True).connect("add", lambda sel: sel.annotation.set_text(f'{sel.artist.get_array()[sel.target.index]:.2f}'))
  5. plt.title('交互式热力图')
  6. plt.show()

Tällä tavalla, kun hiiri liikkuu lämpökartan datapisteiden päällä, vastaavat arvot tulevat näkyviin.

kuva-20240204002444309

12. Standardoitu tietoalue

Joskus meidän on ehkä normalisoitava data-alue, jotta tietojen erot näyttäisivät selkeämmin.Tämä voidaan tehdä kauttaNormalizeluokka toteutettavaksi:

  1. from matplotlib.colors import Normalize
  2. normalized_data = Normalize()(data) # 将数据标准化
  3. fig, ax = plt.subplots()
  4. im = ax.imshow(normalized_data, cmap='YlGnBu', interpolation='bicubic')
  5. plt.colorbar(im, label='标准化值范围')
  6. plt.title('标准化热力图')
  7. plt.show()

13. Vie lämpökartta

Lopuksi voimme viedä piirretyn lämpökartan kuvatiedostona Matplotlibin kautta myöhempää käyttöä tai jakamista varten:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. plt.colorbar(im)
  4. plt.title('导出热力图')
  5. plt.savefig('heatmap.png')

Yllä oleva on sarja esimerkkejä ja tekniikoita erilaisten viileiden lämpökarttojen piirtämiseen Matplotlibilla. Näiden esimerkkien avulla saimme syvällisen ymmärryksen Matplotlibin tehosta ja siitä, kuinka luoda värikkäitä, interaktiivisia ja edistyksellisiä lämpökarttoja säätämällä parametreja ja soveltamalla erilaisia ​​tekniikoita. Toivottavasti nämä esimerkit ovat antaneet hyödyllistä opastusta datan visualisoinnin parissa.

Yhteenveto:

Tämän artikkelin esittelyn kautta meillä on syvällinen keskustelu Matplotlib-kirjaston erilaisista tekniikoista ja parametriasetuksista piirtäessämme erilaisia ​​viileälämpökarttoja. Tässä ovat oppimamme keskeiset kohdat:

  1. Perustieto:Opimme lämpökarttojen piirtämisen perusparametreista Matplotlibissa, kutendatacmapinterpolationvminjavmax, näillä parametreilla on tärkeä vaikutus lämpökartan ulkonäköön ja luettavuuteen.

  2. Yleisimmät lämpökarttatyypit:Keskustelimme esimerkkien kautta yleisten lämpökarttojen piirustusmenetelmistä, kuten peruslämpökartat, mukautetut värikartat, huomautukset, erimuotoiset lämpökartat, lohkolämpökartat, usean alikartan lämpökartat, 3D-lämpökartat jne.

  3. Lisäasetukset:Opimme tekemään edistyneitä värikartoitus- ja väripalkkiasetuksia sekä tekemään lämpökartoista yksilöllisempiä ja luettavampia säätämällä väripalkkien tarroja, dynaamista näyttöä, interaktiivisuutta, standardoituja tietoalueita ja muita tekniikoita.

  4. Käytännön vinkkejä:Otimme käyttöön joitain käytännön tekniikoita, kuten väripalkkien lisäämistä, lämpökarttojen vientiä kuvatiedostoina, lämpökarttojen interaktiivista näyttöä jne. parantaaksemme kaavioiden käytettävyyttä ja jaettavuutta.