programing

Matplotlib: 다른 그래프 요소 뒤에 격자선 그리기

jooyons 2023. 7. 19. 21:19
반응형

Matplotlib: 다른 그래프 요소 뒤에 격자선 그리기

Matplotlib에서는 다음과 같이 점선 격자선을 만듭니다.

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')

그러나 막대와 같은 다른 그래프 요소 뒤에 그리드 선을 그리는 방법(또는 가능한 경우에도)을 찾을 수 없습니다.그리드를 추가하는 순서와 다른 요소를 추가하는 순서를 변경해도 아무런 차이가 없습니다.

격자선이 다른 모든 것 뒤에 나타나도록 만드는 것이 가능합니까?

이에 따르면 - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - 다음을 사용할 수 있습니다.Axis.set_axisbelow(True)

(저는 현재 처음으로 matplotlib을 설치하고 있는데, 그게 맞는지 전혀 모르겠습니다. "matplotlib z order grid"를 구글링하여 찾았습니다. - "z order"는 일반적으로 이러한 종류의 것을 설명하는 데 사용됩니다(z는 "페이지 밖으로 나온" 축입니다).

Andrew Cook의 답변을 어떻게 적용해야 할지 명확하지 않았기 때문에, 이것은 다음과 같은 것을 기반으로 한 완전한 해결책입니다.

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

모든 그림에 대한 설정의 유효성을 확인하려면 다음을 설정할 수 있습니다.

plt.rc('axes', axisbelow=True)

또는

plt.rcParams['axes.axisbelow'] = True

Matplotlib>=2.0에 대해 작동합니다.

저도 같은 문제가 있었고 다음과 같은 문제가 있었습니다.

[line.set_zorder(3) for line in ax.lines]
fig.show() # to update

증가하다3작동하지 않는 경우 더 높은 값으로.

설정할 수도 있습니다.zorder싸움질을 하는.matplotlib.pyplot.grid

plt.grid(which='major', axis='y', zorder=-1.0)

Seaborn의 스타일 중 하나를 사용해볼 수 있습니다.예를 들어:

import seaborn as sns  
sns.set_style("whitegrid")

격자선뿐만 아니라 외관도 더 멋질 것입니다.

일부(나와 같은)에게는 다른 요소의 "일부"만 뒤에 그리드를 그리는 것이 흥미로울 수 있습니다.그리기 순서를 세부적으로 제어하기 위해 matplotlib을 사용할 수 있습니다.예술가. 예술가.축에서 set_zorder를 직접 설정합니다.

ax.yaxis.grid(color='gray', linestyle='dashed')
ax.set_zorder(3)

이것은 matplotlib의 노트에 언급되어 있습니다.축.축.그리드.

언급URL : https://stackoverflow.com/questions/1726391/matplotlib-draw-grid-lines-behind-other-graph-elements

반응형