我用这段代码创建了一个子图:
f, axs =plt.subplots(2,3)
现在我在循环中通过执行以下操作在每个子图上绘制一个图:
for i in range(5):
plt.gcf().get_axes()[i].plot(x,u)
是否有类似的代码来设置我访问的子图的轴限制?
答案 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)