matplotlib - одноосная метка для многопанельного графика? - PullRequest
3 голосов
/ 01 декабря 2011

Я хочу создать многопанельный график:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.scatter(1,1)
ax2 = fig.add_subplot(2,1,2,sharex=ax1)
ax2.scatter(1,1)

, а затем создать отдельный объект осей только для метки ...

dummy = fig.add_subplot(1,1,1)
dummy.set_visible(False)
dummy.yaxis.set_label_text('y label')
dummy.yaxis.label.set_visible(True)

Но не работает.Интересно почему?

1 Ответ

5 голосов
/ 01 декабря 2011

Когда у меня вчера была похожая проблема, я просто использовал функцию text() для достижения результата. Используя ваш пример, это будет выглядеть примерно так:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.scatter(1,1)
ax2 = fig.add_subplot(2,1,2,sharex=ax1)
ax2.scatter(1,1)

ax = fig.add_axes( [0., 0., 1, 1] )
ax.set_axis_off()
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.text( 
    .05, 0.5, "Y Label", rotation='vertical',
    horizontalalignment='center', verticalalignment='center'
)

Вы также можете использовать plt.subplots_adjust(), чтобы освободить место для меток.

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