Матплотлиб Фигура Оси - PullRequest
       16

Матплотлиб Фигура Оси

0 голосов
/ 02 октября 2019

У меня есть API, который возвращает plt.figure(). Я трижды вызываю API для генерации трех разных фигур.

f1 = plt.figure()
f2 = plt.figure()
f3 = plt.figure()

Я хочу отображать их рядом, поэтому создаю новую фигуру, например:

fig, axes = plt.subplots(nrows=1, ncols=3)

Как я могу заполнить каждый из axes plt.figure() s, которые я создал через API?

Короче говоря, я хочу заполнить их:

enter image description here

1 Ответ

1 голос
/ 02 октября 2019

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

import matplotlib.pyplot as plt, numpy as np

figs = []
for _ in range(3):
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.set_title(f'Dummy{_}')
    h1 = ax.plot(np.random.rand(10,2))[0]
    figs.append(fig)


def update(axes, figs):
    for axi, figi in zip(axes, figs):
        for axj in figi.axes:
            for line in axj.lines:
                x, y = line.get_data()
                axi.plot(x, y)
        axi.figure.canvas.draw_idle()
    return axes

print(figs[0].axes[0].lines)
fig, ax = plt.subplots(1, 3)
ax[1].set_title('Recreated figure')
update(ax, figs)
fig.show()

enter image description here

...