Berbagi teknologi

Jelajahi Matplotlib - menggambar peta panas

2024-07-12

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

1. Perkenalan

Peta panas adalah cara efektif untuk menampilkan data matriks melalui pemetaan warna. Matplotlibimshow Fungsi adalah alat yang ampuh untuk membuat berbagai peta panas. Sebelum memulai contoh, mari kita pahami dulu parameter utamanya:

  • data:Data matriks yang akan diplot.
  • peta cm:Pemetaan warna menentukan distribusi warna di peta panas.
  • interpolasi:Metode interpolasi, mempengaruhi kelancaran peta panas.
  • vmin dan vmax:Tentukan nilai minimum dan maksimum untuk peta warna.

2. Peta panas dasar

Pertama, mari kita menggambar peta panas dasar untuk menunjukkan distribusi kumpulan data secara keseluruhan:

  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()

Dalam contoh sederhana ini, kami menggunakanviridispeta warna dannearestmetode interpolasi.

gambar-20240204002238552

3. Pemetaan warna khusus

Matplotlib mendukung berbagai peta warna bawaan, namun kami juga dapat menyesuaikan peta warna untuk membuat peta panas lebih dipersonalisasi. Berikut adalah contoh peta warna khusus:

  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. Tambahkan komentar

Menambahkan anotasi ke peta panas dapat menyampaikan makna data dengan lebih jelas.kita bisa gunakanannotateFungsi memberi label nilai pada peta panas:

  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. Peta panas berbagai bentuk

Matplotlib juga mendukung penggambaran peta panas dengan berbagai bentuk, seperti titik melingkar atau elips. Berikut ini contohnya:

  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. Blokir peta panas

Terkadang kita ingin menyorot blok tertentu dalam matriks untuk membuat informasi penting lebih menonjol.Kita bisa melakukan ini dengan menggunakanimshowdariextentParameter untuk mencapai hal ini:

  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()

gambar-20240204002304491

7. Peta panas multi-subgraf

Dalam beberapa kasus, kita mungkin perlu menampilkan beberapa peta panas dalam grafik yang sama untuk membandingkan atau menyajikan aspek data yang berbeda.Ini dapat dilakukan melalui Matplotlibsubplotmenyelesaikan:

  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. Peta panas 3D

Matplotlib juga mendukung menggambar peta panas 3D, yang sangat berguna untuk menampilkan data dengan struktur tiga dimensi:

  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. Pemetaan warna tingkat lanjut dan pengaturan bilah warna

Matplotlib memungkinkan eksplorasi lebih lanjut pengaturan lanjutan peta warna dan bilah warna untuk memenuhi kebutuhan yang lebih kompleks. Berikut adalah contoh yang menunjukkan penyesuaian bilah warna dan menambahkan label bilah warna:

  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()

gambar-20240204002506344

10. Tampilan dinamis peta panas

Terkadang kita ingin menampilkan perubahan data secara dinamis, yang dapat dilakukan dengan menggunakan MatplotlibFuncAnimation menyelesaikan. Berikut ini adalah contoh peta panas dinamis sederhana:

  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. Interaktivitas peta panas

Untuk membuat peta panas lebih interaktif, Anda dapat menggunakan MatplotlibimshowmenggabungkanmplcursorsPerpustakaan mengimplementasikan tampilan titik data:

  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()

Dengan cara ini, saat mouse mengarahkan mouse ke titik data peta panas, nilai yang sesuai akan ditampilkan.

gambar-20240204002444309

12. Rentang data standar

Terkadang, untuk menunjukkan perbedaan data dengan lebih jelas, kita mungkin perlu menormalkan rentang data.Ini dapat dilakukan melaluiNormalizekelas untuk diimplementasikan:

  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. Ekspor peta panas

Terakhir, kita dapat mengekspor peta panas yang digambar sebagai file gambar melalui Matplotlib untuk digunakan atau dibagikan lebih lanjut:

  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')

Di atas adalah serangkaian contoh dan teknik menggambar berbagai jenis peta panas dingin dengan Matplotlib. Melalui contoh-contoh ini, kami memperoleh pemahaman mendalam tentang kekuatan Matplotlib dan cara membuat peta panas yang penuh warna, interaktif, dan canggih dengan menyesuaikan parameter dan menerapkan teknik yang berbeda. Semoga contoh-contoh ini memberikan panduan yang berguna untuk pekerjaan Anda dalam visualisasi data.

Meringkaskan:

Melalui pendahuluan artikel ini, kami melakukan diskusi mendalam tentang berbagai teknik dan pengaturan parameter perpustakaan Matplotlib saat menggambar berbagai jenis peta panas dingin. Berikut adalah poin-poin penting yang kami pelajari:

  1. Pengetahuan dasar:Kami mempelajari tentang parameter dasar untuk menggambar peta panas di Matplotlib, sepertidatacmapinterpolationvminDanvmax, parameter ini mempunyai dampak penting pada tampilan dan keterbacaan peta panas.

  2. Jenis peta panas yang umum:Melalui contoh, kita membahas metode menggambar jenis peta panas umum seperti peta panas dasar, pemetaan warna khusus, anotasi, peta panas berbagai bentuk, peta panas blok, peta panas multi-subpeta, peta panas 3D, dll.

  3. pengaturan lanjutan:Kami mempelajari cara melakukan pemetaan warna tingkat lanjut dan pengaturan bilah warna, serta cara membuat peta panas lebih dipersonalisasi dan mudah dibaca dengan menyesuaikan label bilah warna, tampilan dinamis, interaktivitas, rentang data standar, dan teknik lainnya.

  4. Kiat praktis:Kami memperkenalkan beberapa teknik praktis, seperti menambahkan bilah warna, mengekspor peta panas sebagai file gambar, tampilan interaktif peta panas, dll., untuk meningkatkan kegunaan dan kemudahan berbagi bagan.