将数字添加到Matplotlib中的子图

时间:2018-05-10 18:21:51

标签: python matplotlib

我是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 :(得分:1)

除非你的函数签名必须保留在你的例子中,否则在函数之外创建子图并将相应的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)