gpt4 book ai didi

python - Matplotlib 中等高线下方的网格线

转载 作者:太空狗 更新时间:2023-10-30 02:12:42 24 4
gpt4 key购买 nike

我有一个关于网格线 matplotlib 的问题。我不确定这是否可行。我正在绘制下图,如图所示。

我不会给出完整的代码,因为它涉及到读取文件。

但是代码的重要部分在这里 -

X, Y = np.meshgrid(smallX, smallY)
Z = np.zeros((len(X),len(X[0])))
plt.contourf(X, Y, Z, levels, cmap=cm.gray_r, zorder = 1)
plt.colorbar()
...
# Set Border width zero
[i.set_linewidth(0) for i in ax.spines.itervalues()]

gridLineWidth=0.1
ax.set_axisbelow(False)
gridlines = ax.get_xgridlines()+ax.get_ygridlines()
#ax.set_axisbelow(True)

plt.setp(gridlines, 'zorder', 5)

ax.yaxis.grid(True, linewidth=gridLineWidth, linestyle='-', color='0.6')
ax.xaxis.grid(False)
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')

enter image description here

现在,我的问题是这样的——

如果我将网格线放在轮廓下方,它们就会消失,因为它们在轮廓下方。如果我将网格线放在轮廓上方,它们看起来就像现在的样子。然而,我想要的是网格线应该是可见的,但应该低于轮廓的黑色部分。我不确定这是否可能。

谢谢!

最佳答案

除了指定轮廓和网格线的 z 顺序外,您还可以尝试屏蔽轮廓数据的零值。

这是一个小例子:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-2*np.pi, 2*np.pi, 0.1)
y = np.arange(-2*np.pi, 2*np.pi, 0.1)
X, Y = np.meshgrid(x, y)

Z = np.sin(X) - np.cos(Y)
Z = np.ma.masked_less(Z, 0) # you use mask_equal(yourData, yourMagicValue)

fig, ax = plt.subplots()
ax.contourf(Z, zorder=5, cmap=plt.cm.coolwarm)
ax.xaxis.grid(True, zorder=0)
ax.yaxis.grid(True, zorder=0)

输出: enter image description here

关于python - Matplotlib 中等高线下方的网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14071121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com