내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
히트맵은 색상 매핑을 통해 행렬 데이터를 표시하는 효과적인 방법입니다. Matplotlibimshow
함수는 다양한 히트맵을 생성하는 강력한 도구입니다. 예제를 시작하기 전에 먼저 주요 매개변수를 이해해 보겠습니다.
먼저, 데이터 세트의 전체 분포를 표시하기 위해 기본 열 지도를 그려 보겠습니다.
- 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은 3D 히트맵 그리기도 지원하는데, 이는 3차원 구조로 데이터를 표시하는 데 매우 유용합니다.
- 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
, 이러한 매개변수는 히트맵의 모양과 가독성에 중요한 영향을 미칩니다.
일반적인 히트맵 유형:예제를 통해 기본 히트맵, 사용자 정의 색상 매핑, 주석, 다양한 모양의 히트맵, 블록 히트맵, 다중 서브맵 히트맵, 3D 히트맵 등과 같은 일반적인 히트맵 유형의 그리기 방법을 논의했습니다.
고급 설정:고급 색상 매핑 및 색상 막대 설정을 수행하는 방법과 색상 막대 레이블, 동적 디스플레이, 상호 작용, 표준화된 데이터 범위 및 기타 기술을 조정하여 히트 맵을 더욱 개인화하고 읽기 쉽게 만드는 방법을 배웠습니다.
실용적인 팁:차트의 유용성과 공유성을 향상시키기 위해 컬러 바 추가, 히트맵을 이미지 파일로 내보내기, 히트맵의 대화형 표시 등과 같은 몇 가지 실용적인 기술을 도입했습니다.