6

グリッド線matplotlibについて1つ質問があります。これが可能かどうかはわかりません。画像のように次のグラフをプロットしています。

ファイルの読み取りが含まれるため、コード全体を示すことはしません。

ただし、コードの重要な部分はここにあります-

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')

ここに画像の説明を入力してください

さて、私の質問はこんな感じです-

等高線の下にグリッド線を配置すると、その下にあるため、グリッド線が消えます。等高線の上にグリッド線を配置すると、現在のように見えます。ただし、グリッド線は表示されている必要がありますが、等高線の黒い部分の下にある必要があります。それが可能かどうかはわかりません。

ありがとう !

4

1 に答える 1

9

輪郭とグリッド線の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)

そして出力: ここに画像の説明を入力してください

于 2012-12-28T19:59:36.237 に答える