mpl_toolkits.axes_grid1.host_subplot в функции конфликтует со встроенным бэкэндом - PullRequest
0 голосов
/ 09 мая 2019

Во-первых, извинения, если это было задано в другом месте.

Фон

В блокноте Jupyter я хочу сделать много графиков с несколькими осями Y, используя host_subplot.Это прекрасно работает для одного подзаговора на одной фигуре, но мне бы хотелось иметь два сюжета одинаковой разметки с разным содержанием рядом.

Я понимаю, что могу добиться этого с помощью

fig = plt.figure()
ho1 = host_subplot(121, figure=fig, axes_class=AA.Axes)
ho2 = host_subplot(122, figure=fig, axes_class=AA.Axes)

подхода

Поскольку создание этих графиков занимает немного времени, и я хочу сохранить блокнот в чистоте, я помещаю их в функцию, которой я передаю соответствующие вещи, которые хочу построить,Здесь я публикую только тестовую функцию.

import matplotli.pyplot as plt

def test(position, fig):
    from mpl_toolkits.axes_grid1 import host_subplot
    import mpl_toolkits.axisartist as AA
    ho = host_subplot(position, figure=fig, axes_class=AA.Axes)
    ho.scatter(range(4), range(4))
    plt.show()

Проблема

Интерактивный бэкэнд:

%matplotlib nbagg
fig = plt.figure()
test(121, fig)
test(122, fig)

nbagg backend

Я использую встроенный бэкэнд, потому что я генерирую сотни таких графиков, и что многие интерактивные графики, вероятно, будут жарить мои ресурсы.Теперь

встроенный бэкэнд:

%matplotlib inline
fig = plt.figure()
test(121, fig)
test(122, fig)

inline backend

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

Вопрос (ы)

Можно ли решить эту проблему с помощью функционального подхода?Я бы предпочел не сохранять графики на диск, а затем пересматривать их.Я пропускаю лучшую альтернативу?

Помощь действительно приветствуется.

matplotlib.__version__ - это 2.2.4

Редактировать:

теперь, когда я смотрю наэто на расстоянии, ticklabels не то, что они должны быть, в любом сюжете.Итак, как отображаются данные?

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