matplotlib 调整colorbar的区间
时间: 2023-09-26 21:08:33 浏览: 126
可以使用 `vmin` 和 `vmax` 参数来调整 colorbar 的区间。
示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制图像
fig, ax = plt.subplots()
im = ax.imshow(y.reshape(-1, 1), cmap='coolwarm')
# 添加colorbar,并设置区间范围
cbar = fig.colorbar(im)
cbar.set_ticks([-1, 0, 1])
cbar.set_ticklabels(['Low', 'Medium', 'High'])
cbar.set_clim(vmin=-1, vmax=1)
plt.show()
```
运行结果:
![colorbar](https://cdn.jsdelivr.net/gh/dyj095/CDN/blog/images/matplotlib_colorbar.png)
相关问题
matplotlib的colorbar色条
### 如何在 Matplotlib 中设置和自定义 Colorbar 色条
#### 使用 `Colorbar` 类创建基于现有图像的颜色条
对于大多数情况,当有一个已经绘制好的图形对象(mappable),可以直接通过调用 `plt.colorbar()` 或者 `figure.colorbar(mappable)` 来快速添加一个默认配置下的颜色条[^1]。
```python
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
pcm = ax.pcolormesh(np.random.rand(10, 10))
fig.colorbar(pcm, ax=ax)
plt.show()
```
#### 利用 `ColorbarBase` 实现完全独立的 Colorbar 定制化设计
如果希望构建一个不依赖于具体绘图实例的颜色条,则需借助 `mpl.colorbar.ColorbarBase` 类来完成这一目标。这种方式提供了极大的灵活性,允许开发者精确控制每一个细节,比如边界范围、离散区间划分等特性[^2]。
```python
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
# 创建一个新的 figure 和 axis 对象用于放置 colorbar
fig, _ = plt.subplots()
# 构建辅助工具帮助我们更方便地定位新加入的 axes
divider = make_axes_locatable(fig.gca())
# 新增一个小区域专门用来显示 colorbar
cax = divider.append_axes('right', size='5%', pad=0.05)
# 初始化 colormap 并指定其映射规则
norm = colors.Normalize(vmin=-4000, vmax=10000)
# 基于上述设定生成 colorbar
cb = plt.colorbar(
cm.ScalarMappable(norm=norm),
cax=cax,
orientation='vertical'
)
plt.show()
```
为了进一步增强定制能力,还可以调整更多属性:
- **Colormap**: 更改使用的色彩方案;
- **Ticks and Tick Labels**: 修改刻度位置及其标签文字;
- **Boundaries & Extend**: 设置分级界限并决定超出边界的处理方式;
这些都可以通过对相应参数赋值实现个性化修改[^3]。
Plt colorbar 范围
在 Matplotlib 中,可以使用 `plt.colorbar` 函数添加色条,并通过调整 `plt.colorbar` 函数的参数来定制色条的样式。其中,`plt.colorbar` 函数的 `boundaries` 和 `ticks` 参数可以用来设置色条的范围和刻度。
- `boundaries`:指定色条的范围,是一个列表或一维数组,用于指定色条的边界值。如果不指定,Matplotlib 会根据映射的数据自动确定范围。
- `ticks`:指定色条的刻度,是一个列表或一维数组,用于指定色条的刻度值。如果不指定,Matplotlib 会根据边界值自动确定刻度。
下面是一个简单的例子,展示了如何使用 `boundaries` 和 `ticks` 参数设置色条的范围和刻度:
```python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
z = np.cos(x)
fig, ax = plt.subplots()
sc = ax.scatter(x, y, c=z, cmap='viridis')
cb = fig.colorbar(sc, boundaries=np.linspace(-1, 1, 11), ticks=np.linspace(-1, 1, 5))
cb.set_label('Color')
plt.show()
```
在上述代码中,我们使用 `scatter` 函数绘制了一个散点图,并将 `c` 参数设置为随机生成的数据 `z`,`cmap` 参数设置为 `viridis` 颜色映射。接着,我们使用 `colorbar` 函数添加了一个色条,并设置了 `boundaries` 参数为 `np.linspace(-1, 1, 11)`,表示色条的范围从 -1 到 1,共分为 11 个区间。我们还设置了 `ticks` 参数为 `np.linspace(-1, 1, 5)`,表示色条的刻度为 -1、-0.5、0、0.5、1。最后,我们使用 `set_label` 函数为色条添加一个标签。运行代码,可以看到绘制出了一个带有自定义范围和刻度的散点图。
阅读全文