Matplotlib - 图表对象上的 plt.show()

我这里有一个非常简单的例子。我正在从函数返回的 ax 对象绘制一个图:


import matplotlib.pyplot as plt


x = ['a', 'b', 'c']

y = [1, 2, 3]


def make_plot():


    fig, ax = plt.subplots()

    ax.set_title('test bar chart')


    return ax



chart = make_plot()

chart.bar(x, y)


plt.show()               #why does this show the chart?

我的问题是最后关于 plt.show() 的问题。显然,这显示了图表的输出。但为什么?对我来说, plt.show() 似乎与任何东西都没有联系。我有我的chart对象,其中包含我的图表及其所有参数等等。但是 plt.show() 如何知道与之交互呢?拥有类似的东西似乎更直观chart.show(),就像chart类实例一样。


大话西游666
浏览 145回答 1
1回答

尚方宝剑之说

好问题!chart是调用时创建的 Axes plt.subplots()。Pyplot 是所谓的“有状态”API。当您调用 plt.* 函数时,它会更改 pyplot 的内部状态,这可能会影响将来的调用。当您调用 时plt.subplots(),它知道有一个新创建的Figure,其中包含新创建的子图Axes。同样,如果您调用plt.plot(),它会存储最新轴的记录,并在该图上绘制数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python