[python] matplotlib의 라인 플롯에 수직 격자 선이 나타나도록하기

내 플롯에 수평 및 수직 그리드 선을 모두 얻고 싶지만 기본적으로 수평 그리드 선만 나타납니다. pandas.DataFramex 축에 날짜가있는 선 플롯을 생성하기 위해 Python의 SQL 쿼리에서를 사용하고 있습니다. 왜 그들이 날짜에 나타나지 않는지 잘 모르겠고 이것에 대한 답을 찾으려고 노력했지만 찾을 수 없었습니다.

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

data.plot()
grid('on')

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

또한 아래 코드를 추가하려고 시도했지만 수직 격자 선이없는 동일한 출력을 얻습니다.

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

어떤 제안?

여기에 이미지 설명 입력



답변

당신은 예를 들어 사용자의 통화에서 부울 인수를주고 사용해야 할 수도 있습니다 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 = None, which = ‘major’, axis = ‘both’, ** kwargs)
축 그리드를 켜거나 끕니다.

which ‘major'(기본값), ‘minor’또는 ‘both’를 사용하여 주요 눈금 그리드, 보조 눈금 그리드 또는 둘 모두가 영향을 받는지 여부를 제어 할 수 있습니다.

axis 그릴 격자 선 집합을 제어하기 위해 ‘both'(기본값), ‘x’또는 ‘y’가 될 수 있습니다.

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

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

이 방법을 사용하면 그리드 선에 대해 표시 할 내용을보다 세밀하게 제어 할 수 있습니다.


답변

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

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

진실은 그리드가 작동하고 있지만 00:00에는 하나의 v 그리드 만 있고 다른 그리드에는 그리드가 없다는 것입니다. 여러 날 중 11 월 1 일에 그리드가 하나뿐이라는 동일한 문제가 발생합니다.


답변

짧은 대답 (자세한 내용은 아래 참조) :

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

여기에 이미지 설명 입력

당신이하는 일은 정확하고 작동 할 것입니다.

그러나 예제 의 X 축이 DateTime 축 이기 때문에 눈금 (아마도)은 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='-')


답변

수평선 만

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

이것은 효과가 있었다


답변