matplotlib热力图颜色改变
时间: 2025-01-06 17:33:29 浏览: 14
### 更改 Matplotlib 热力图的颜色方案
为了在 Matplotlib 中修改热力图的颜色方案,可以通过 `imshow` 函数中的 `cmap` 参数来指定不同的颜色映射表 (colormap)。下面展示了如何实现这一点:
#### 使用预定义的 colormap 修改热力图颜色
Matplotlib 提供了许多内置的 colormaps 可以直接使用。
```python
import matplotlib.pyplot as plt
import numpy as np
# 创建随机数据矩阵用于展示
data = np.random.rand(10, 10)
fig, ax = plt.subplots()
heatmap = ax.imshow(data, cmap='viridis') # 'viridis' 是一种常用的 colormap
plt.colorbar(heatmap)
plt.show()
```
此代码片段创建了一个基于 `'viridis'` 颜色映射表的热力图[^1]。
#### 自定义 colormap 并应用到热力图
当默认提供的 colormap 不满足需求时,还可以通过组合不同颜色来自定义新的 colormap。
```python
from matplotlib.colors import LinearSegmentedColormap
colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)] # 定义三种基本颜色:红绿蓝
n_bins = [3, 6, 10, 100] # 尝试多个分箱数目的效果
cm = LinearSegmentedColormap.from_list(name='custom_cmap', colors=colors, N=n_bins[-1])
fig, ax = plt.subplots()
heatmap = ax.imshow(data, cmap=cm)
plt.colorbar(heatmap)
plt.show()
```
这段代码构建了一种由红色过渡至绿色再转蓝色的新 colormap,并将其应用于热力图中。
#### 设置透明度 alpha 值
对于更复杂的视觉化需求,可以在定义颜色元组时加入第四个参数——alpha 来控制不透明度。
```python
rgba_colors = [(r, g, b, a) for r in range(256) for g in range(256) for b in range(256) for a in np.linspace(0, 1, num=256)]
custom_rgba_cm = LinearSegmentedColormap.from_list('custom_rgba', rgba_colors[:len(colors)], N=len(colors))
fig, ax = plt.subplots()
heatmap = ax.imshow(data, cmap=custom_rgba_cm)
plt.colorbar(heatmap)
plt.show()
```
这里演示了如何利用四元素 tuple `(R,G,B,A)` 形式的颜色列表创建带有透明度变化的 colormap。
阅读全文