为什么matplotlib不能直接对象进行操作?

时间:2017-05-25 19:16:34

标签: matplotlib

为什么matplotlib以它的方式工作?例如,为什么这样做:

x = plt.bar([1,2,3,4],[1,2,2,1])
plt.title('Title')

而不是:

x = plt.bar([1,2,3,4],[1,2,2,1])
x.title('Title')

看起来情节应该是具有“title”,“xlabel”等方法的对象。

对于我来说,拥有甚至不接受他们操作的对象作为参数的函数对我来说是不合理的,但是我假设有一个很好的理由它以这种方式工作?

1 个答案:

答案 0 :(得分:1)

Matplotlib实际上有一个面向对象的API。所以这个例子就是

fig, ax = plt.subplots()
ax.bar([1,2,3,4],[1,2,2,1])
ax.set_title('Title')
ax.set_xlabel("X-label")
fig.set_facecolor("pink")

要处理的对象主要是matplotlib.Axes.axes,此处称为ax。它有绘图方法,以及调整图形的各种其他方法。

matplotlib API有很好的文档记录。您将在文档中找到OO编程所需的相应方法和返回类型。

然后你可以查看ax.bar的返回类型,即matplotlib.container.BarContainer,并将第二个栏着色为

bars = ax.bar([1,2,3,4],[1,2,2,1])
bars[1].set_color("crimson")

Pyplot本身并不是非常pythonic,因为它被设计成类似于MATLAB语言。但在引擎盖下,它通常只是从API调用相应的类方法。