한 플롯이 선형이고 다른 플롯이 로그인 경우 틱 간격은 이중 Y 축 플롯의 두 y 축에 대한 로그입니다.

고정 x 축에 대해 각각 line1 및 line2라는 두 개의 numpy 배열을 플로팅하고 있습니다. 하나의 배열은 세미로지를 사용하여 로그 플롯 에 플로팅하고 다른 배열은 동일한 x 축의 기본 선형 플롯에 플로팅합니다.

두 y 축의 크기 조정 형식은 괜찮은 것 같습니다. 그러나 오른쪽 선형 플롯 (line2)에 대한 y 축 눈금 간격과 배율은 로그 (좁은 간격 눈금 포함)로 보이며 변경할 방법을 찾을 수 없습니다.

아래 플롯의 오른쪽 y 축을 선형으로 변경하는 방법이 있습니까?

내 코드는 다음과 같습니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0.01, 10.0, 0.01)
y = np.exp(x)
y2 = np.sin(2*np.pi*x)

fig1 = plt.figure() 
ax1 = fig1.add_subplot(111)
line1 = ax1.semilogy(x,y)
ax2 = fig1.add_subplot(111, sharex=ax1, frameon=False)
line2 = ax2.plot(x,y2,"r")    

#MATPLOTLIB BUG? THE SECOND Y AXES HAS A LOG SCALE AND THE TICK LABELS CAN'T BE CHANGED
ax2.set_yscale('linear') 
ax2.yaxis.tick_right() 

plt.show()

여기에 이미지 설명 입력

tmdavison

다시 ax2 = ax1.twinx()대신 사용 add_subplot하십시오. 그러면 새 축의 y 눈금이 이전 축의 y 눈금과 분리됩니다. 문서에서 :

twinx()

x 축을 공유하지만 y 축은 독립적 인 플롯을 생성하기 위해 축 쌍을 생성합니다. self의 y 축은 왼쪽에 눈금이 있고 반환 된 축은 오른쪽에 눈금이 있습니다.

당신은 또한 다음을 설정할 필요가 없습니다 yscalelinear그 자동으로 수행 될 때, 오른쪽으로 틱, 또는 이동twinx

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0.01, 10.0, 0.01)
y = np.exp(x)
y2 = np.sin(2*np.pi*x)

fig1 = plt.figure() 
ax1 = fig1.add_subplot(111)
line1 = ax1.semilogy(x,y)
ax2 = ax1.twinx()      # <-- Note the change to twinx here
line2 = ax2.plot(x,y2,"r")    

plt.show()

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사