ylabel使用matplotlib中的函数子图

时间:2012-02-23 14:40:49

标签: matplotlib subplot

我最近发现了函数子图,这似乎是一种比子图更优雅的设置多个子图的方法。但是,我似乎无法为每个子图改变轴的属性。

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函数,但是我需要这样做吗?

1 个答案:

答案 0 :(得分:2)

可能想要使用各个子图实例。

正如您所发现的,plt.ylabel设置了最后一个活动图的ylabel。要更改单个Axes的参数,即子图,您可以使用any one of the available methods。要更改ylabel,您可以使用axes[0].set_ylabel('plot 1')

pyplotplt正如您所定义的那样,是一个帮助程序模块,用于快速访问AxesFigure方法,而无需将这些对象存储在变量中。正如documentation states

  

[Pyplot p]提供了类似MATLAB的绘图框架。

您仍然可以使用此界面,但您需要调整哪个Axes是当前有效Axes。为此,pyplot采用axes(h)方法,其中hAxes的实例。因此,在您的示例中,您可以调用plt.axes(axes[0])将第一个子图设置为活动,然后plt.axes(axes[1])设置另一个子图。