我最近发现了函数子图,这似乎是一种比子图更优雅的设置多个子图的方法。但是,我似乎无法为每个子图改变轴的属性。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npx = np.linspace(0, 20, 100)
fig, axes = plt.subplots(nrows=2)
for i in range(10):
axes[0].plot(x, i * (x - 10)**2)
plt.ylabel('plot 1')
for i in range(10):
axes[1].plot(x, i * np.cos(x))
plt.ylabel('plot 2')
plt.show()
仅显示最后一个图的ylabel。对于xlabel,xlim和ylim也是如此。
我意识到使用子图的目的是创建子图的公共布局,但如果将sharex和sharey设置为false,那么我是否应该能够更改某些参数?
一种解决方案是使用subplot函数,但是我需要这样做吗?
答案 0 :(得分:2)
是您可能想要使用各个子图实例。
正如您所发现的,plt.ylabel
设置了最后一个活动图的ylabel。要更改单个Axes
的参数,即子图,您可以使用any one of the available methods。要更改ylabel,您可以使用axes[0].set_ylabel('plot 1')
。
pyplot
或plt
正如您所定义的那样,是一个帮助程序模块,用于快速访问Axes
和Figure
方法,而无需将这些对象存储在变量中。正如documentation states:
[Pyplot p]提供了类似MATLAB的绘图框架。
您仍然可以使用此界面,但您需要调整哪个Axes
是当前有效Axes
。为此,pyplot
采用axes(h)
方法,其中h
是Axes
的实例。因此,在您的示例中,您可以调用plt.axes(axes[0])
将第一个子图设置为活动,然后plt.axes(axes[1])
设置另一个子图。