2

我最近发现了函数 subplots,这似乎是一种比 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 函数,但我需要这样做吗?

4

1 回答 1

2

的,您可能想使用单个子图实例。

如您所见,plt.ylabel设置最后一个活动图的 ylabel。要更改单个的参数Axes,即子图,您可以使用任何一种可用的方法。要更改 ylabel,您可以使用axes[0].set_ylabel('plot 1').

pyplot,或者plt如您所定义的,是一个帮助模块,用于快速访问AxesFigure方法,而无需将这些对象存储在变量中。正如文档所述

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

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

于 2012-02-23T15:03:28.817 回答