python - python中是否有一个函数可以填充两个轮廓线之间的区域,每个轮廓线由不同的函数给出?

标签 python matplotlib plot contour

如果我有两条轮廓线

plt.contourf(xx, yy, zzmax, levels=[1], colors='r', alpha=0.8)
plt.contourf(xx, yy, zzmin, levels=[1], colors='r', alpha=0.8)

如何绘制一个填充它们之间区域的域?

(抱歉,如果这是一个菜鸟问题)

最佳答案

以下代码首先创建一些测试数据。蓝线表示 zzmaxzzmin 等于 1 的位置。右侧的子图以红色显示 zzmax 小于 1 且 zzmin 大于 1 的区域。

from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as np
from scipy.ndimage import gaussian_filter

xx = np.linspace(0, 10, 100)
yy = np.linspace(0, 8, 80)

np.random.seed(11235813)
zzmax = gaussian_filter(np.random.randn(len(yy), len(xx)) * 10 + 1, 8)
zzmin = gaussian_filter(np.random.randn(len(yy), len(xx)) * 10 + 0.9, 8)

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(15, 4))
cnt1 = ax1.contourf(xx, yy, zzmax, cmap='RdYlGn')
plt.colorbar(cnt1, ax=ax1)
ax1.contour(xx, yy, zzmax, levels=[1], colors='skyblue', linewidths=3)
ax1.set_title('zzmax')

cnt2 = ax2.contourf(xx, yy, zzmin, cmap='RdYlGn')
plt.colorbar(cnt2, ax=ax2)
ax2.contour(xx, yy, zzmin, levels=[1], colors='skyblue', linewidths=3)
ax2.set_title('zzmin')

ax3.contourf(xx, yy, (zzmax <= 1) & (zzmin >= 1), levels=[0.5, 2], cmap=ListedColormap(['red']), alpha=0.3)
ax3.set_title('zzmax ≤ 1 and zmin ≥ 1')

plt.tight_layout()
plt.show()

coloring between contours

关于python - python中是否有一个函数可以填充两个轮廓线之间的区域,每个轮廓线由不同的函数给出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70970193/

相关文章:

雷达图轴范围

Python:ksh函数的返回输出

python - python中的计时函数没有给出准确的结果

matplotlib - Jupyter notebook-如何缩放绘图以填充整个页面宽度? (同时保持纵横比)

python - 每个循环多一个颜色条

python - 在Holoviews中设置默认样式参数

r - 向 R 中的绘图添加一条垂直线

python - cv2.imdecode()从base64中的图像(通过Websocket收到的mimetype image/jpeg)返回None

python - 如何将所有标准特殊标记添加到我的拥抱面部标记生成器和模型中?

python - matplotlib:我怎样才能 "predraw"动画?