如何绘制到 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])
如何绘制到 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])
正如我在评论中所说,阅读
如何将 pyplot 函数附加到图形实例?用于解释 OO 和状态机接口之间的区别matplotlib
。
您应该将绘图功能修改为类似
def plot(..., ax=None, **kwargs):
if ax is None:
ax = gca()
ax.plot(..., **kwargs)
您可以使用特定轴的绘图功能:
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()
这应该绘制到两个不同的子图。