Добавление фигур в подсюжеты в Matplotlib - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в matplotlib и пытаюсь разобраться, как добавлять фигуры в подплот.

У меня есть три разные функции, которые выводят одну фигуру:

def plot_fig_1(vars, args):
    f, ax, put.subplots()
    # do something
    ax.plot(x, y)
    return f, ax


def plot_fig_2(vars, args):
    f, ax, put.subplots()
    # do something
    ax.plot(x, y)
    return f, ax

Теперь, например, я хотел бы объединить обе фигуры в один график с общей осью X.Я попробовал:

f_1, ax_1 = plot_fig_1(...)
f_2, ax_2 = plot_fig_2(...)

new_fig, new_ax = plt.subplots(2,1)
new_ax[0] = f_1
new_ax[1] = f_2

и вот я в основном заблудился.Я читаю руководство по Matplotlib, но пока не повезло.

1 Ответ

0 голосов
/ 12 мая 2018

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

def plot_fig_1(vars, args, ax):
    # do something
    ax.plot(x, y)

def plot_fig_2(vars, args, ax):
    # do something
    ax.plot(x, y)

fig, ax = plt.subplots(2, 1, sharex=True)
plot_fig_1(..., ax[0])
plot_fig_2(..., ax[1])

Если вам нужно создать фигуру, содержащую только одно из вспомогательных участков, вы можете сделать это с помощью:

fig, ax = plt.subplot()
plot_fig_1(..., ax)

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

def plot_fig_1(vars, args, ax=None):
    if ax is None:
        fig, ax = plt.subplot()
    # do something
    ax.plot(x, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...