我创建了一些其他用户使用的类,并提供了便利功能,可以轻松获得一个图,包括图形和轴生成。
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
答案 0 :(得分:6)
您可以设计绘图功能,使其能够与fig
和ax
对象一起使用,如果它们作为参数传递:
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
或者你可以设计一个不同的函数来使用轴数组......