使用matplotlib中的axis对象设置活动子图?

时间:2014-06-25 19:06:20

标签: python matplotlib

面向对象的matplotlib子图接口很不错,但在调用包含plt.plot(x, y之类的行的函数时,我很难使用它。这些函数可以轻松地与plt.subplot()一起使用,但是可以使用给定的轴对象设置活动子图吗?具体来说,我希望将以下内容绘制成两个单独的子图:

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y= [0 ,1 2]

fig, axs = plt.subplots(2,1)

plt.some_function_to_set_active_subplot(axs[0])
plt.plot(x, y)

plt.some_function_to_set_active_subplot(axs[1])
plt.plot(x, y)

是否存在任何此类函数some_function_to_set_active_subplot

编辑:我特意不能使用ax.plot,或类似的东西。我基本上是在询问如何将面向对象的界面与matlab风格的界面混合在一起。

编辑2:我也不想使用plt.subplot。我想使用OO界面来设置子图,并使用matlab风格进行实际绘图。

2 个答案:

答案 0 :(得分:14)

您可以使用plt.axes设置当前活动轴。从documentation:“轴(h),其中h是轴实例,使h成为当前轴。”

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y = [10 ,20, 30]

fig, axs = plt.subplots(2,1)

plt.axes(axs[0])
plt.plot(x,y)
plt.axes(axs[1])
plt.plot(y,x)
plt.show()

答案 1 :(得分:0)

不建议使用方法plt.axes。请改用plt.sca。按照上面的示例:

import matplotlib.pyplot as plt

x = [0 ,1, 2]
y = [10 ,20, 30]

fig, axs = plt.subplots(2,1)

plt.sca(axs[0])
plt.plot(x,y)
plt.sca(axs[1])
plt.plot(y,x)
plt.show()