python 中的蒙面等高线图,真假之间没有填充物
Masked contour plot in python without filler between True-False
我想从蒙版数组中绘制一条轮廓线。
问题是 matplotlib 在 True 和 False 之间的 "unknown" 区域画了几条线,而不是一条线。
线是在 True 或 False 的中间还是边缘并不重要,所以在下面的简单示例中,我想要 Y=1、Y=2 或 Y 中的单条线=1.5.
X = np.array([1,2,3,4,5])
Y = np.array([0,1,2,3])
Z_mask = np.array([[False, False, False, False, False],
[False, False, False, False, False],
[True, True, True, True, True],
[True, True, True, True, True]])
plt.contour(X,Y,Z_mask)
plt.show()
图像绘图示例
我已经为 plt.contour 尝试了不同的关键字参数,但其中 none 似乎可以完成这项工作。
您可以使用第四个参数告诉 contour
要绘制多少层:
来自文档:
contour(X,Y,Z,N)
contour up to N automatically-chosen levels.
所以对于你的情节:
plt.contour(X,Y,Z_mask,1)
生产:
旁注:对于上面评论中的 'workaround',无需将掩码数组从 False
和 True
转换为 0
和 1
,如 python
,布尔值只是整数的一个子类:
In [14]: False == 0
Out[14]: True
In [15]: True == 1
Out[15]: True
我想从蒙版数组中绘制一条轮廓线。
问题是 matplotlib 在 True 和 False 之间的 "unknown" 区域画了几条线,而不是一条线。
线是在 True 或 False 的中间还是边缘并不重要,所以在下面的简单示例中,我想要 Y=1、Y=2 或 Y 中的单条线=1.5.
X = np.array([1,2,3,4,5])
Y = np.array([0,1,2,3])
Z_mask = np.array([[False, False, False, False, False],
[False, False, False, False, False],
[True, True, True, True, True],
[True, True, True, True, True]])
plt.contour(X,Y,Z_mask)
plt.show()
图像绘图示例
我已经为 plt.contour 尝试了不同的关键字参数,但其中 none 似乎可以完成这项工作。
您可以使用第四个参数告诉 contour
要绘制多少层:
来自文档:
contour(X,Y,Z,N)
contour up to N automatically-chosen levels.
所以对于你的情节:
plt.contour(X,Y,Z_mask,1)
生产:
旁注:对于上面评论中的 'workaround',无需将掩码数组从 False
和 True
转换为 0
和 1
,如 python
,布尔值只是整数的一个子类:
In [14]: False == 0
Out[14]: True
In [15]: True == 1
Out[15]: True