如何在每个子图中设置轴限制

时间:2015-05-15 13:43:33

标签: python matplotlib

我用这段代码创建了一个子图:

f, axs =plt.subplots(2,3)

现在我在循环中通过执行以下操作在每个子图上绘制一个图:

for i in range(5):
 plt.gcf().get_axes()[i].plot(x,u)

是否有类似的代码来设置我访问的子图的轴限制?

2 个答案:

答案 0 :(得分:2)

是的,确实存在,但是当我们对其进行清理时,让我们清理一下代码:

f, axs = plt.subplots(2, 3)

for i in range(5): #are you sure you don't mean 2x3=6?
    axs.flat[i].plot(x, u)
    axs.flat[i].set_xlim(xmin, xmax)
    axs.flat[i].set_ylim(ymin, ymax) 

使用axs.flat将您的axs(2,3)Axes数组转换为长度为6的Axes的可迭代平面。比plt.gcf().get_axes()更容易使用。

如果您只使用range语句迭代轴并且从不使用索引i,则只需迭代axs

f, axs = plt.subplots(2, 3)

for ax in axs.flat: #this will iterate over all 6 axes
    ax.plot(x, u)
    ax.set_xlim(xmin, xmax)
    ax.set_ylim(ymin, ymax) 

答案 1 :(得分:1)

是的,您可以在AxesSubplot对象上使用.set_xlim和.set_ylim,它是get_axes()[i]。

您提供的样式中的示例代码:

import numpy as np
from matplotlib import pyplot as plt
f, axs =plt.subplots(2,3)
x = np.linspace(0,10)
u = np.sin(x)
for i in range(6):
    plt.gcf().get_axes()[i].plot(x,u)
    plt.gcf().get_axes()[i].set_xlim(0,5)
    plt.gcf().get_axes()[i].set_ylim(-2,1)

或稍微亢利:

import numpy as np
from matplotlib import pyplot as plt
f, axs =plt.subplots(2,3)
x = np.linspace(0,10)
u = np.sin(x)
for sub_plot_axis in plt.gcf().get_axes():
    sub_plot_axis.plot(x,u)
    sub_plot_axis.set_xlim(0,5)
    sub_plot_axis.set_ylim(-2,1)