Управление трекером при использовании twinx - PullRequest
7 голосов
/ 05 октября 2011

enter image description here

Трекер в правом нижнем углу (выделен красным цветом) сообщает о значениях y относительно оси y справа.

Как я могу заставить трекер сообщать о значениях y относительно оси Y слева?

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(6)
numdata = 100
t = np.linspace(0.05, 0.11, numdata)
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002

fig = plt.figure()

ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(t, y1, 'r-', label='y1')
ax2.plot(t, y2, 'g-', label='y2')

ax1.legend()
plt.show()

Я знаю, что замена y1 на y2 сделаеттрекер сообщает значения y1, но это также ставит отметки y1 справа, а это не то, чего я хочу.

ax1.plot(t, y2, 'g-', label='y2')
ax2.plot(t, y1, 'r-', label='y1')

Ответы [ 2 ]

3 голосов
/ 20 сентября 2012

Обратите внимание, что если вы создаете оси ax3= ax1.twiny() после ax1 и ax2, трекер переходит к ax3, и у вас снова появляется отчет о значениях y1.

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(6)
numdata = 100
t = np.linspace(0.05, 0.11, numdata)
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002

fig = plt.figure()

ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(t, y1, 'r-', label='y1')
ax2.plot(t, y2, 'g-', label='y2')

ax1.legend()
ax3 = ax1.twiny()
ax3.set_xticks([])
plt.show()
3 голосов
/ 05 октября 2011

Ах, нашел это: ax.yaxis.set_ticks_position("right").Вместо того, чтобы пытаться «управлять трекером», вы можете поменять местами оси Y.

ax1.yaxis.set_ticks_position("right")
ax2.yaxis.set_ticks_position("left")

ax1.plot(t, y2, 'g-', label='y1')
ax2.plot(t, y1, 'r-', label='y2')

AFAIK, трекер всегда следует ax2 при использовании twinx.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...