python,matplotlib, 多个等势面图,共用一个colorbar
时间: 2024-03-21 07:03:57 浏览: 41
要实现多个等势面图共用一个colorbar,可以使用Matplotlib中的subplots()函数创建一个包含多个子图的图形。然后在每个子图中使用contourf()函数绘制等势面图,并将每个子图的颜色映射设置为相同的,即使用相同的cmap参数。最后,在整个图形中添加一个共用的colorbar,使用colorbar()函数即可。
以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z1 = np.sin(X) + np.cos(Y)
Z2 = np.cos(X) - np.sin(Y)
# 创建多个子图
fig, axs = plt.subplots(1, 2, figsize=(8, 4))
# 绘制等势面图
cmap = plt.cm.get_cmap('cool')
cont1 = axs[0].contourf(X, Y, Z1, cmap=cmap)
cont2 = axs[1].contourf(X, Y, Z2, cmap=cmap)
# 添加共用的colorbar
fig.colorbar(cont1, ax=axs.ravel().tolist(), shrink=0.8)
# 显示图形
plt.show()
```
这段代码会生成两个等势面图,共用一个cool色彩映射的colorbar。注意,其中axs.ravel().tolist()用于将多个子图合并成一个列表,以便在colorbar()函数中一次性添加所有子图的colorbar。