내 플롯에 수평 및 수직 그리드 선을 모두 얻고 싶지만 기본적으로 수평 그리드 선만 나타납니다. pandas.DataFrame
x 축에 날짜가있는 선 플롯을 생성하기 위해 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
이것은 효과가 있었다