面向对象的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风格进行实际绘图。
答案 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()