Как распределить вторичную ось y между подзаговорами в matplotlib

Если у вас есть несколько подзаговоров, содержащих вторичную ось y (созданную с использованием doublex ), как вы можете делиться этой вторичной осью y между подзаголовками? Я хочу, чтобы они масштабировались одинаково в автоматическом режиме (поэтому не устанавливайте y-пределы впоследствии вручную). Для первичной оси y это возможно, используя ключевое слово sharey в вызове subplot .

Ниже пример показывает мою попытку, но он не может разделить вторичную ось y обоих подзаговоров. Я использую Matplotlib / Pylab:

ax = [] #create upper subplot ax.append(subplot(211)) plot(rand(1) * rand(10),'r') #create plot on secondary y-axis of upper subplot ax.append(ax[0].twinx()) plot(10*rand(1) * rand(10),'b') #create lower subplot and share y-axis with primary y-axis of upper subplot ax.append(subplot(212, sharey = ax[0])) plot(3*rand(1) * rand(10),'g') #create plot on secondary y-axis of lower subplot ax.append(ax[2].twinx()) #set twinxed axes as the current axes again, #but now attempt to share the secondary y-axis axes(ax[3], sharey = ax[1]) plot(10*rand(1) * rand(10),'y') 

Мне это нравится:

Пример двух подзаговоров с неудачным совместным использованием вторичной оси y

Причина, по которой я использовал функцию axes () для установки общей оси y, заключается в том, что doublex не принимает ключевое слово sharey .

Я использую Python 3.2 на Win7 x64. Версия Matplotlib – 1.2.0rc2.

  • Использование якорей в regex python для получения точного соответствия
  • Как передать большие массивы numpy между подпроцессами python без сохранения на диск?
  • Получить скриншот на Windows с Python?
  • Как я могу тестировать сообщения django?
  • Дополнительные параметры Python
  • как получить единственный результат из SQLite-запроса в python?
  • У Python есть тернарный условный оператор?
  • Jython не загружает PYTHONPATH в sys.path
  • One Solution collect form web for “Как распределить вторичную ось y между подзаговорами в matplotlib”

    Вы можете использовать Axes.get_shared_y_axes() следующим образом:

     from numpy.random import rand import matplotlib matplotlib.use('gtkagg') import matplotlib.pyplot as plt # create all axes we need ax0 = plt.subplot(211) ax1 = ax0.twinx() ax2 = plt.subplot(212) ax3 = ax2.twinx() # share the secondary axes ax1.get_shared_y_axes().join(ax1, ax3) ax0.plot(rand(1) * rand(10),'r') ax1.plot(10*rand(1) * rand(10),'b') ax2.plot(3*rand(1) * rand(10),'g') ax3.plot(10*rand(1) * rand(10),'y') plt.show() 

    Здесь мы просто соединяем второстепенные топоры вместе.

    Надеюсь, это поможет.

    Python - лучший язык программирования в мире.