2012-12-28 4 views
4

격자 선 matplotlib에 대한 질문이 하나 있습니다. 이것이 가능한지 확실하지 않습니다. 다음 그림을 그림과 같이 플롯하고 있습니다.격자 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

지금, 내 질문이 같다 그들은 그것 아래에있다. 격자 선을 윤곽 위에 배치하면 현재보고있는 것과 같습니다. 그러나 그리드 선은 표시되어야하지만 윤곽선의 검은 부분 아래에 있어야합니다. 그럴 수 있는지 확실하지 않습니다.

감사합니다!

+1

은'은'countourf' 플롯의 alpha' 0.8 아래 정도 한 후 아래의 격자 선을 플로팅 켜십시오 . – tacaswell

답변

7

윤곽선과 눈금 선의 z 차수를 지정하는 것 외에도 윤곽이 지정된 데이터의 0 값을 마스킹 할 수도 있습니다.

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

+0

감사합니다! 그것은 작동합니다. :) – Raj

관련 문제