我应该通过类方法发送/接收什么matplotlib对象?

时间:2015-11-09 08:56:21

标签: python matplotlib

使用matplotlib,你可以创建图形,管理这个图形的轴(实际上是子图?)但是我不明白为什么以及如何,最后你做plt.show()来看情节。为什么这不是figax对象的方法?模块(plt)如何知道要绘制什么?

import numpy as np
import matplotlib.pyplot as plt
x, y = np.random.randn(2, 100)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, "ro")
plt.show()

我问这个问题,因为现在,假设你有一个带有方法的类,以便绘制对象中包含的数据。我的问题是我想回归的对象是什么?轴,图或plt?以下方法之一是正确的方法:

def get_plot(self):
    """ return plt """
    plt.plot(self.data.x, self.data.y)
    return plt

def get_plot(self):
    """ return fig """
    fig = plt.figure()
    plt.plot(self.data.x, self.data.y)
    return fig

def get_plot(self):
    """ return ax """
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(self.data.x, self.data.y)
    return ax

最后一个可能是最清晰的,因为您在每一行上都看到了您正在使用的对象。但是如果我得到一个Figure或Axes对象。我怎样才能轻松策划呢?

1 个答案:

答案 0 :(得分:1)

plt.show将显示已创建的所有数据。因此,pyplot无需“知道”哪一个,因为所有都将被显示。来自文档:

  

显示一个数字。当使用其pylab模式在ipython中运行时,显示   所有数字并返回ipython提示符。

     

在非交互模式下,显示所有数字并阻止直到   数字已经关闭

我会亲自返回figax,此后您可以对该对象执行其他功能(例如ax.set_xlimfig.savefig()等)。无需返回plt,因为这是您已导入的pyplot模块。