在同一图上绘制方法到许多可能的轴

时间:2015-08-30 13:18:05

标签: python matplotlib

我创建了一些其他用户使用的类,并提供了便利功能,可以轻松获得一个图,包括图形和轴生成。

import pylab as plt
def plot_something():
    fig, ax = plt.subplots()
    plt.plot(xrange(10), axes=ax)
    return fig, ax
def even_more_impressive_plot():
    fig, ax = plt.subplots()
    plt.plot([x**2 for x in xrange(10)], axes=ax)
    return fig, ax

但是,有一个疯狂的用户,希望能够使用这些情节,但在一个图中并排,我的第一个想法没有成功:

desired_fig, desired_axes = plt.subplots(2)
dummy_fig, dummy_ax = plot_something()
dummy_fig2, dummy_ax2 = even_more_impressive_plot()
desired_axes[0] = dummy_ax
desired_axes[1] = dummy_ax2
plt.show()

但遗憾的是,这使得desired_axes空了。是否有一个简单的方法或我必须拆分这样的方法:

def _plot_something(ax):
    plt.plot(xrange(10), axes=ax)

def plot_something2():
    fig, ax = plt.subplots()
    _plot_something(ax)
    return fig, ax

1 个答案:

答案 0 :(得分:6)

您可以设计绘图功能,使其能够与figax对象一起使用,如果它们作为参数传递:

def plot_something(fig=None, ax=None):
    if fig is None and ax is None:
        fig, ax = plt.subplots()
    elif fig is None:
        fig = ax.get_figure()
    elif ax is None:
        ax = fig.gca()
    ax.plot(xrange(10))
    return fig, ax

然后,每当你需要使用相同的数字但不同的斧头时,你可以将它们作为参数传递给你的绘图函数:

desired_fig, desired_axes = plt.subplots(2)
dummy_fig, dummy_ax = plot_something(desired_fig, desired_axes[0]) # or desired_axes[1] depending on where you need to plot

或者你可以设计一个不同的函数来使用轴数组......