绘制Matplotlib中的特定轴

时间:2013-06-13 11:15:25

标签: python matplotlib

如何在matplotlib中绘制特定的轴?我创建了自己的对象,它有自己的绘图方法,并采用标准的args和kwargs来调整线条颜色,宽度等,我也希望能够绘制到特定的轴。

我看到有一个轴属性接受一个Axes对象,但无论它仍然只绘制到最后创建的轴。

这是我想要的一个例子

fig, ax = subplots(2, 1)

s = my_object()
t = my_object()

s.plot(axes=ax[0])
t.plot(axes=ax[1])

2 个答案:

答案 0 :(得分:5)

正如我在评论中所说,请阅读 How can I attach a pyplot function to a figure instance?用于解释OO与matplotlib的状态机接口之间的区别。

您应该将绘图功能修改为类似

def plot(..., ax=None, **kwargs):
    if ax is None:
        ax = gca()
    ax.plot(..., **kwargs)

答案 1 :(得分:2)

您可以使用特定轴的绘图功能:

import matplotlib.pyplot as plt
from scipy import sin, cos
f, ax = plt.subplots(2,1)
x = [1,2,3,4,5,6,7,8,9]
y1 = sin(x)
y2 = cos(x)
plt.sca(ax[0])
plt.plot(x,y1)
plt.sca(ax[1])
plt.plot(x,y2)
plt.show()

这应该绘制两个不同的子图。