programing

수직 격자선을 matplotlib의 선 그림에 표시

yellowcard 2023. 7. 29. 08:19
반응형

수직 격자선을 matplotlib의 선 그림에 표시

내 플롯에 수평 및 수직 그리드 선을 모두 표시하고 싶은데 기본적으로 수평 그리드 선만 표시됩니다.사용 중입니다.pandas.DataFramepython의 SQL 쿼리에서 x축에 날짜가 있는 선 그림을 생성합니다.왜 날짜에 표시되지 않는지 잘 모르겠습니다. 그리고 저는 이것에 대한 답을 찾으려 했지만 찾을 수 없었습니다.

그래프를 그리는 데 사용한 것은 아래의 간단한 코드뿐입니다.

data.plot()
grid('on')

data는 날짜와 SQL 쿼리의 데이터를 포함하는 DataFrame입니다.

아래 코드도 추가해봤지만 세로 격자선이 없는 동일한 출력이 나옵니다.

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines

좋은 의견이라도 있나?

enter image description here

예를 들어, 호출에 부울 변수를 지정해야 할 수 있습니다.ax.yaxis.grid(True)대신에ax.yaxis.grid()또한 두 가지를 모두 사용하므로 다음으로 결합할 수 있습니다.ax.grid각 차원에 대해 한 번씩 수행하는 것이 아니라 두 가지 모두에서 작동합니다.

ax = plt.gca()
ax.grid(True)

그렇게 하면 당신은 해결될 겁니다.

plt.gca().xaxis.grid(True)나를 위한 해결책으로 증명되었습니다.

matplotlib 문서에 따르면, 그 서명은Axes학급grid()방법은 다음과 같습니다.

Axes.grid(b=Grid, 이는='major', 축='both', **kwargs)
축 그리드를 켜거나 끕니다.

which주 눈금 그리드, 보조 눈금 그리드 또는 둘 모두의 영향을 받는지 여부를 제어하려면 '주 눈금'(기본값), '주 눈금' 또는 '둘 다'가 될 수 있습니다.

axis그릴 격자선 세트를 제어하려면 'both'(기본값), 'x' 또는 'y'가 될 수 있습니다.

따라서 x축과 y축 모두에 대한 격자선을 표시하기 위해 다음 코드를 사용할 수 있습니다.

ax = plt.gca()
ax.grid(which='major', axis='both', linestyle='--')

이 방법을 사용하면 그리드 선에 대해 표시할 항목을 보다 세부적으로 제어할 수 있습니다.

간단한 답변(자세한 내용은 아래 참조):

ax.grid(axis='both', which='both')

enter image description here

당신이 하는 일은 올바르고 효과가 있어야 합니다.

그러나 예제의 X축날짜 시간 축이므로 주 눈금(아마도)은 X축의 양쪽 끝에만 나타납니다.표시되는 다른 체크 표시는 보조 체크 표시입니다.

ax.grid()메서드는 기본적으로 주 눈금에 격자선을 그립니다.따라서 그림에는 아무 것도 표시되지 않습니다.

아래 코드를 사용하여 눈금 표시를 강조 표시합니다.메이저는 파란색이고 마이너는 빨간색입니다.

ax.tick_params(which='both', width=3)
ax.tick_params(which='major', length=20, color='b')
ax.tick_params(which='minor', length=10, color='r')

이제 그리드 선이 보조 눈금에도 나타나도록 하려면 다음을 통과합니다.which='minor'방법:

ax.grid(b=True, which='minor', axis='x', color='#000000', linestyle='--')

또는 단순히 사용합니다.which='both'주 그리드 선과 보조 그리드 선을 모두 그립니다.그리고 이것은 좀 더 우아한 격자선입니다.

ax.grid(b=True, which='minor', axis='both', color='#888888', linestyle='--')
ax.grid(b=True, which='major', axis='both', color='#000000', linestyle='-')

아마도 이것은 문제를 해결할 수 있습니다: matplotlib, 플롯에서 그리드의 크기를 정의합니다.

ax.grid(True, which='both')

사실은 그리드가 작동하고 있지만 00:00에는 v-grid가 하나만 있고 다른 것에는 그리드가 없습니다.저는 11월 1일에 여러 날 중에 그리드가 하나밖에 없다는 것과 같은 문제에 직면합니다.

수평 라인에만 해당

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines

효과가 있었습니다.

시도:

plt.grid(True)

오른쪽에 주 눈금이 있는 날짜 시리즈의 수평 및 수직 그리드가 모두 켜집니다.

Python3 / MatPlotLib 3.4.3 사용

언급URL : https://stackoverflow.com/questions/16074392/getting-vertical-gridlines-to-appear-in-line-plot-in-matplotlib

반응형