matplotlib의 보조 y 축에 y 축 레이블 추가


119

를 사용하여 왼쪽 y 축에 y 레이블을 plt.ylabel추가 할 수 있지만 보조 y 축에 어떻게 추가 할 수 있습니까?

table = sql.read_frame(query,connection)

table[0].plot(color=colors[0],ylim=(0,100))
table[1].plot(secondary_y=True,color=colors[1])
plt.ylabel('$')

답변:


233

가장 좋은 방법은 axes객체와 직접 상호 작용하는 것입니다.

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.set_ylabel('Y2 data', color='b')

plt.show()

예제 그래프


왼쪽과 같은 오른쪽 y 축을 얻는 방법은 아래에서 위로, 0에서 5까지 정렬된다는 것을 의미합니다.
Sigur

눈금을 겹치지 않고 파란색 텍스트를 회전하는 방법은 무엇입니까?
Sigur

@Sigur 당신은 horizontalalignment 및 / 또는 verticalalignment 매개 변수를 ax2.set_ylabel에 전달하는 것을 엉망으로 만들어야합니다
Paul H

@PaulH, ax1에서 y 제한을 가져와 ax2로 설정할 수 있으므로 레이블 위치가 정렬됩니다.
Sigur

@Sigur 축 제한 및 눈금이 레이블 회전과 상호 작용하는 방식을 따르지 않지만 행복하다면 godspeed
Paul H

22

matplotlib를 엉망으로 만들지 않고 간단한 솔루션이 있습니다. 판다뿐입니다.

원래의 예를 수정 :

table = sql.read_frame(query,connection)

ax = table[0].plot(color=colors[0],ylim=(0,100))
ax2 = table[1].plot(secondary_y=True,color=colors[1], ax=ax)

ax.set_ylabel('Left axes label')
ax2.set_ylabel('Right axes label')

기본적으로 secondary_y=True옵션이 주어지면 (물론 ax=ax전달 되더라도 ) pandas.plot레이블을 설정하는 데 사용하는 다른 축을 반환합니다.

나는 이것이 오래전에 답변되었다는 것을 알고 있지만,이 접근법이 그만한 가치가 있다고 생각합니다.


감사합니다-훌륭한 접근 방식입니다! 그러나 이것은 기본 y 축에 먼저 플로팅 한 다음 보조 y 축에 플로팅하는 경우에만 작동한다는 점에 유의할 가치가 있습니다. 순서를 바꾸면 오작동합니다.
user667489

7

지금은 Python에 대한 액세스 권한이 없지만 머리 위로 :

fig = plt.figure()

axes1 = fig.add_subplot(111)
# set props for left y-axis here

axes2 = axes1.twinx()   # mirror them
axes2.set_ylabel(...)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.