如何使用Axes对象在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
。我想用面向对象的接口来设置子图,而用 matlab 风格来进行实际的绘图。
2 个回答
25
你可以使用 plt.axes
来设置当前活动的坐标轴。根据 文档 的说明:“axes(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()