【问题标题】:ylabel using function subplots in matplotlibylabel 在 matplotlib 中使用函数子图
【发布时间】:2012-03-13 23:37:11
【问题描述】:

我最近发现了 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 函数,但我需要这样做吗?

【问题讨论】:

  • 您可能希望将您的 plt.ylabel 调用移到循环之外。它们都是相同的,每个子图只需要调用一次。

标签: matplotlib subplot


【解决方案1】:

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

如您所见,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]) 设置另一个子图。

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 2012-05-24
    • 2020-06-13
    • 2015-10-23
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多