моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Тепловые карты — это эффективный способ отображения матричных данных посредством цветового картирования. Матплотлибimshow
Функции — мощный инструмент для создания различных тепловых карт. Прежде чем приступить к примеру, давайте сначала разберемся с основными параметрами:
Сначала давайте нарисуем базовую тепловую карту, чтобы показать общее распределение набора данных:
- import matplotlib.pyplot as plt
- import numpy as np
-
- data = np.random.random((10, 10)) # 生成随机矩阵数据
-
- plt.imshow(data, cmap='viridis', interpolation='nearest')
- plt.colorbar()
-
- plt.title('基本热力图')
- plt.show()
В этом простом примере мы используемviridis
цветовая карта иnearest
интерполяционный метод.
Matplotlib поддерживает множество встроенных цветовых карт, но мы также можем настроить цветовую карту, чтобы сделать тепловую карту более персонализированной. Вот пример пользовательской карты цветов:
- custom_cmap = plt.cm.get_cmap('coolwarm', 5) # 从'coolwarm'中选择5个颜色
-
- plt.imshow(data, cmap=custom_cmap, interpolation='bilinear')
- plt.colorbar()
-
- plt.title('自定义颜色映射')
- plt.show()
Добавление аннотаций к тепловой карте может более четко передать смысл данных.мы можем использоватьannotate
Функция размечает значения на тепловой карте:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='plasma', interpolation='bicubic')
-
- for i in range(len(data)):
- for j in range(len(data[i])):
- text = ax.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='w')
-
- plt.colorbar(im)
-
- plt.title('带有注释的热力图')
- plt.show()
Matplotlib также поддерживает рисование тепловых карт различной формы, например, круглых или эллиптических точек. Вот пример:
- from matplotlib.patches import Ellipse
-
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='YlGnBu', interpolation='bicubic')
-
- # 添加椭圆形状的点
- for i in range(len(data)):
- for j in range(len(data[i])):
- ellipse = Ellipse((j, i), 0.8, 0.8, edgecolor='w', facecolor='none')
- ax.add_patch(ellipse)
-
- plt.colorbar(im)
-
- plt.title('不同形状的热力图')
- plt.show()
Иногда нам хочется выделить определенные блоки в матрице, чтобы сделать ключевую информацию более заметной.Мы можем сделать это, используяimshow
изextent
Параметры для достижения этой цели:
- fig, ax = plt.subplots()
- block_data = np.random.random((5, 5)) # 生成块状数据
-
- ax.imshow(block_data, cmap='Reds', interpolation='nearest', extent=[2, 7, 2, 7])
- plt.colorbar()
-
- plt.title('分块热力图')
- plt.show()
В некоторых случаях нам может потребоваться отобразить несколько тепловых карт на одном графике, чтобы сравнить или представить различные аспекты данных.Это можно сделать через Matplotlib.subplot
выполнить:
- fig, axs = plt.subplots(1, 2, figsize=(10, 4)) # 一行两列的子图
-
- # 第一个子图
- axs[0].imshow(data, cmap='Blues', interpolation='nearest')
- axs[0].set_title('子图1')
-
- # 第二个子图
- axs[1].imshow(data.T, cmap='Oranges', interpolation='bicubic') # 转置数据以展示不同热力图
- axs[1].set_title('子图2')
-
- plt.show()
Matplotlib также поддерживает рисование трехмерных тепловых карт, что очень полезно для отображения данных с трехмерной структурой:
- from mpl_toolkits.mplot3d import Axes3D
-
- fig = plt.figure(figsize=(8, 6))
- ax = fig.add_subplot(111, projection='3d')
-
- x, y = np.meshgrid(range(len(data)), range(len(data)))
- ax.plot_surface(x, y, data, cmap='viridis')
-
- ax.set_title('3D热力图')
- plt.show()
Matplotlib позволяет дополнительно изучить расширенные настройки цветовых карт и цветовых панелей для удовлетворения более сложных потребностей. Вот пример, демонстрирующий настройку цветовой панели и добавление меток цветной панели:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
-
- # 自定义颜色栏
- cbar = plt.colorbar(im, ax=ax, fraction=0.046, pad=0.04)
- cbar.set_label('数据值', rotation=270, labelpad=15)
-
- plt.title('高级颜色栏设置')
- plt.show()
Иногда нам нужно отображать изменения в данных динамически, что можно сделать с помощью Matplotlib.FuncAnimation
выполнить. Ниже приведен простой пример динамической тепловой карты:
- from matplotlib.animation import FuncAnimation
-
- fig, ax = plt.subplots()
- data_frames = [np.random.random((10, 10)) for _ in range(10)] # 生成多帧数据
-
- def update(frame):
- ax.clear()
- im = ax.imshow(data_frames[frame], cmap='Blues', interpolation='nearest')
- plt.title(f'动态热力图 - 帧 {frame}')
-
- ani = FuncAnimation(fig, update, frames=len(data_frames), interval=500, repeat=False)
- plt.show()
Чтобы сделать тепловую карту более интерактивной, вы можете использовать Matplotlib.imshow
объединитьmplcursors
Библиотека реализует отображение точек данных при наведении:
- import mplcursors
-
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='Greens', interpolation='nearest')
-
- mplcursors.cursor(hover=True).connect("add", lambda sel: sel.annotation.set_text(f'{sel.artist.get_array()[sel.target.index]:.2f}'))
-
- plt.title('交互式热力图')
- plt.show()
Таким образом, при наведении курсора мыши на точки данных тепловой карты будут отображаться соответствующие значения.
Иногда, чтобы более четко показать различия в данных, нам может потребоваться нормализовать диапазон данных.Это можно сделать черезNormalize
класс для реализации:
- from matplotlib.colors import Normalize
-
- normalized_data = Normalize()(data) # 将数据标准化
-
- fig, ax = plt.subplots()
- im = ax.imshow(normalized_data, cmap='YlGnBu', interpolation='bicubic')
- plt.colorbar(im, label='标准化值范围')
-
- plt.title('标准化热力图')
- plt.show()
Наконец, мы можем экспортировать нарисованную тепловую карту в виде файла изображения через Matplotlib для дальнейшего использования или обмена:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
- plt.colorbar(im)
-
- plt.title('导出热力图')
- plt.savefig('heatmap.png')
Выше приведена серия примеров и методов рисования различных типов крутых тепловых карт с помощью Matplotlib. Благодаря этим примерам мы получили глубокое понимание возможностей Matplotlib и того, как создавать красочные, интерактивные и расширенные тепловые карты, регулируя параметры и применяя различные методы. Надеемся, что эти примеры послужили полезным руководством для вашей работы по визуализации данных.
Во вступлении к этой статье мы подробно обсудим различные методы и настройки параметров библиотеки Matplotlib при рисовании различных типов крутых тепловых карт. Вот ключевые моменты, которые мы узнали:
Базовые знания:Мы узнали об основных параметрах рисования тепловых карт в Matplotlib, таких какdata
、cmap
、interpolation
、vmin
иvmax
, эти параметры оказывают важное влияние на внешний вид и читаемость тепловой карты.
Распространенные типы тепловых карт:На примерах мы обсудили методы рисования распространенных типов тепловых карт, таких как базовые тепловые карты, пользовательские цветовые карты, аннотации, тепловые карты различной формы, блочные тепловые карты, тепловые карты с несколькими подкартами, трехмерные тепловые карты и т. д.
расширенные настройки:Мы узнали, как выполнять расширенные настройки цветового сопоставления и цветовых полос, а также как сделать тепловые карты более персонализированными и удобочитаемыми, настраивая метки цветных полос, динамическое отображение, интерактивность, стандартизированные диапазоны данных и другие методы.
Практические советы:Мы представили некоторые практические методы, такие как добавление цветных полос, экспорт тепловых карт в виде файлов изображений, интерактивное отображение тепловых карт и т. д., чтобы повысить удобство использования и возможности совместного использования диаграмм.