Установить предельные значения оси в mplotlib pyplot
У меня есть два подзаголовка на рисунке. Я хочу установить оси второго подзаголовка таким образом, чтобы он имел те же пределы, что и первый подзаговор (который изменяется в зависимости от значений, нанесенных на график). Может кто-нибудь, пожалуйста, помогите мне? Вот код:
import matplotlib.pyplot as plt
plt.figure(1, figsize = (10, 20))
## First subplot: Mean value in each period (mean over replications)
plt.subplot(211, axisbg = 'w')
plt.plot(time,meanVector[0:xMax], color = '#340B8C',
marker = 'x', ms = 4, mec = '#87051B', markevery = (asp,
2*asp))
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45)
plt.axhline(y = Results[0], color = '#299967', ls = '--')
plt.ylabel('Mean Value')
plt.xlabel('Time')
plt.grid(True)
## Second subplot: moving average for determining warm-up period
## (Welch method)
plt.subplot(212)
plt.plot(time[0:len(yBarWvector)],yBarWvector, color = '#340B8C')
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45)
plt.ylabel('yBarW')
plt.xlabel('Time')
plt.xlim((0, T))
plt.grid(True)
Во втором подзаголовке должны быть аргументы для функции plt.ylim()
? Я попытался определить
ymin, ymax = plt.ylim()
в первом подзаголовке, а затем установите
plt.ylim((ymin,ymax))
во втором подзаголовке. Но это не сработало, потому что возвращаемое значение ymax
является максимальным значением, принятым переменной y
(среднее значение) в первом подзаголовке, а не верхним пределом оси y.
Спасибо заранее.
Ответы
Ответ 1
Я искал еще кое-что на веб-сайте matplotlib и понял способ сделать это. Если у кого-то есть лучший способ, пожалуйста, дайте мне знать.
В первом подзаголовке замените plt.subplot(211, axisbg = 'w')
на ax1 = plt.subplot(211, axisbg = 'w')
. Затем во втором подзаголовке добавьте аргументы sharex = ax1
и sharey = ax1
в команду subplot. То есть вторая команда подзаголовка теперь будет выглядеть:
plt.subplot(212, sharex = ax1, sharey = ax1)
Это решает проблему. Но если есть другие лучшие альтернативы, пожалуйста, дайте мне знать.
Ответ 2
Ваше предлагаемое решение должно работать, особенно если графики интерактивны (они будут оставаться в синхронизации, если они меняются).
В качестве альтернативы вы можете вручную установить y-пределы второй оси в соответствии с первой. Пример:
from pylab import *
x = arange(0.0, 2.0, 0.01)
y1 = 3*sin(2*pi*x)
y2 = sin(2*pi*x)
figure()
ax1 = subplot(211)
plot(x, y1, 'b')
subplot(212)
plot(x, y2, 'g')
ylim( ax1.get_ylim() ) # set y-limit to match first axis
show()
![alt text]()