matplotlib图中的fig和ax属性

时间:2015-12-28 19:58:08

标签: python matplotlib

哪个对象包含属性ylim()?在下面的代码中(我已导入所需的包并x1y1正确绘图)来设置y轴限制,我必须使用plt.ylim(),为什么会这样?在我自己的脑海里,我会使用ax1.ylim()因为y轴属于ax对象实例。有人可以解释为什么这不正确吗?

我在这里看到这篇文章:

Why do many examples use "fig, ax = plt.subplots()" in Matplotlib/pyplot/python

这有助于澄清一点,但我仍然不确定。 谢谢!

x1 = df_mstr1['datetime'].values
y1 = df_mstr1['tons'].values
fig1, ax1 = plt.subplots()
ax1.stackplot(x1, y1, color='blue')
plt.ylim(0,300)
fig1.savefig('page.pdf', format = 'pdf')

2 个答案:

答案 0 :(得分:5)

我想到的方式是pyplot.ylim()是便利函数(它在技术上不是属性),提供类似MATLAB的功能来设置 current的y限制< / em> axes(最近创建或绘制的轴),而ax1.set_ylim()设置特定轴对象(可能有多个)的y限制,您将其命名为ax1。< / p>

plt.ylim()适用于不需要太多自定义的快速绘图。当您需要跟踪与您的情节相关的更多对象时,更加面向对象的ax1.set_ylim()会更好,以便更清晰地自定义它们(并跟踪您已定制的内容)。

答案 1 :(得分:1)

您可以使用ax.set_ylim((lower, upper))设置限制(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_ylim)。

matplotlib鼓励两种不同的使用方式。 OO风格提供最大的灵活性和matlab风格,大量使用全球状态。后者对于快速交互式探索很有用,前者是生产就绪的微调图的方法。

您可以详细了解here

我建议坚持一种风格,因为混合都会导致麻烦(至少是我所经历过的)