python好看的渐变色标
时间: 2023-11-13 11:58:09 浏览: 178
可以使用 matplotlib 库中的 LinearSegmentedColormap 类来创建渐变色标。下面是一个简单的例子:
```python
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
# 定义渐变色
colors = [(0, 0, 1), (0, 1, 1), (0, 1, 0), (1, 1, 0), (1, 0, 0)]
# 创建 colormap 对象
cmap = LinearSegmentedColormap.from_list('my_cmap', colors)
# 绘制色标
plt.imshow([[i] for i in range(100)], cmap=cmap)
plt.colorbar()
plt.show()
```
这里定义了一个由蓝色到青色、绿色、黄色、红色的渐变色,然后使用 `LinearSegmentedColormap.from_list` 方法创建了一个 colormap 对象,最后使用 `imshow` 方法绘制了一个简单的色标。
相关问题
python里有哪些好看的色标
Python中有很多好看的色标可供选择,以下是一些常用的色标示例:
1. viridis:一种从深绿色到明黄色的颜色映射,适合用于表示数据的连续变化。
2. magma:一种从黑色到红色的颜色映射,适合用于表示数据的渐变变化。
3. inferno:一种从黑色到黄色的颜色映射,适合用于表示数据的连续变化。
4. plasma:一种从深紫色到亮黄色的颜色映射,适合用于表示数据的连续变化。
5. gist_earth:一种从深绿色到棕色的颜色映射,适合用于表示地理信息。
6. ocean:一种从深蓝色到浅蓝色的颜色映射,适合用于表示水体。
7. terrain:一种从深绿色到浅黄色的颜色映射,适合用于表示地形。
8. rainbow:一种从红色到紫色的颜色映射,适合用于表示数据的循环变化。
contourf色标
### 设置或修改 `contourf` 函数的色标
在 Matplotlib 中,`contourf` 函数用于绘制填充等高线图。为了自定义颜色映射 (colormap),可以传递一个预定义的颜色映射给参数 `cmap` 或者创建一个新的颜色映射对象。
#### 使用预定义的颜色映射
Matplotlib 提供了许多内置的颜色映射选项,可以直接通过名称指定:
```python
import numpy as np
import matplotlib.pyplot as plt
X, Y = np.meshgrid(np.linspace(-3, 3, 128), np.linspace(-3, 3, 128))
Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 -Y**2)
fig, ax = plt.subplots()
cf = ax.contourf(X, Y, Z, cmap='viridis') # 使用 'viridis' 预定义颜色映射
plt.colorbar(cf)
plt.show()
```
此代码片段展示了如何利用 `'viridis'` 这样的预设颜色方案来着色等高线区域[^2]。
#### 创建并应用自定义颜色映射
如果需要更精细控制色彩渐变,则可以通过 `LinearSegmentedColormap.from_list()` 方法构建个性化调色板:
```python
from matplotlib.colors import LinearSegmentedColormap
colors = ["white", "blue", "green", "yellow", "red"]
n_bins = [3, 6, 7, 8, 12] # Discretizes the interpolation into bins
custom_cmaps = []
for n_bin in n_bins:
custom_cmap = LinearSegmentedColormap.from_list(
name=f'custom_{n_bin}',
colors=colors,
N=n_bin
)
custom_cmaps.append(custom_cmap)
# 应用其中一个自定义颜色映射到 contourf 图形上
fig, axes = plt.subplots(nrows=len(custom_cmaps)//2, ncols=2, figsize=(9, 6),
subplot_kw={'xticks': [], 'yticks': []})
axes_flat = axes.flat[:]
for idx, ax in enumerate(axes_flat):
cf = ax.contourf(X, Y, Z, levels=np.linspace(Z.min(), Z.max(), n_bins[idx]),
cmap=custom_cmaps[idx])
plt.tight_layout()
plt.show()
```
这段脚本说明了怎样组合不同数量级别的离散化区间以及特定的颜色序列形成独特的视觉效果[^1]。
阅读全文