plt.figure()vs Matplotlib中的子图

时间:2013-01-21 15:08:52

标签: python graph matplotlib plot

Matplotlib 中,许多示例都以ax = subplot(111)的形式出现,然后函数应用于ax,例如ax.xaxis.set_major_formatter(FuncFormatter(myfunc))。 (找到here

或者,当我不需要子图时,我可以plt.figure()然后使用plt.plot()或类似函数绘制我需要的任何内容。

现在,我完全是第二种情况,但我想在X轴上调用函数set_major_formatter。在plt上调用它当然不起作用:

>>> plt.xaxis.set_major_formatter(FuncFormatter(myfunc)) 
Traceback (most recent call last):
File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'xaxis'

我该怎么办?

2 个答案:

答案 0 :(得分:7)

如果选择了您想要的数字,只需使用gca()获取当前轴实例:

ax = gca()
ax.xaxis.set_major_formatter(FuncFormatter(myfunc)) 

答案 1 :(得分:2)

另一种选择是使用figure()返回的图形对象。

fig = plt.figure()

# Create axes, either:
#  - Automatically with plotting code: plt.line(), plt.plot(), plt.bar(), etc
#  - Manually add axes: ax = fig.add_subplot(), ax = fig.add_axes()

fig.axes[0].get_xaxis().set_major_formatter(FuncFormatter(myfunc)) 

当您处理多个绘图时,此选项非常有用,因为您可以指定要更新的绘图。