我想用Python matplotlib创建包含许多(100)子图的绘图。我找不到合适的语法:
我想要的东西(这不起作用)
plt.subplot(10,10,i,X1, Y)
在一个循环中,i从0到99,然后
plt.show()
许多教程中都提供了语法,以便只有很少的子图。然后,语法可以是
plt.close('all')
fig = plt.figure()
ax1 = plt.subplot(221)
ax2 = plt.subplot(223)
ax3 = plt.subplot(122)
example_plot(ax1)
example_plot(ax2)
example_plot(ax3)
plt.tight_layout()
对于我的问题,我想我不能使用与plt.subplot(10101)
等相同的语法,我不明白。
你有解决方案吗?
由于
答案 0 :(得分:14)
试试这个:
fig, ax = plt.subplots(10, 10)
其中ax将在列表(列表)中包含一百个轴。
这是一个非常方便的功能,来自the docs:
Definition: plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, **fig_kw)
Create a figure with a set of subplots already made.
This utility wrapper makes it convenient to create common layouts of
subplots, including the enclosing figure object, in a single call.
答案 1 :(得分:6)
你的例子几乎是正确的。请使用:
for i in range(100):
ax = plt.subplot(10,10,i)
ax.plot(...)
答案 2 :(得分:5)
这是一个完整工作的代码解决方案,可以显示事物的编号方式,因为看起来人们仍然会看到这里:
columns = 10
rows = 4
fig, ax_array = plt.subplots(rows, columns,squeeze=False)
for i,ax_row in enumerate(ax_array):
for j,axes in enumerate(ax_row):
axes.set_title('{},{}'.format(i,j))
axes.set_yticklabels([])
axes.set_xticklabels([])
# axes.plot(you_data_goes_here,'r-')
plt.show()
哪个输出这个以显示编号是如何工作的(我只用了4行代替10来使图片变小,只需更改"行"到10以获得10行子图):
编号显示您在每个位置的i和j值,以便您可以在matplotlib子图阵列中按照您想要的方式排列。这包含了数组中的子图,用于您喜欢的任何布局。
答案 3 :(得分:3)
如果您正在尝试生成~100个子图,那么实际上您可能希望执行类似this的操作,这样可以更快地运行。您放弃了具有单个轴标签,但有100个子图,除非您正在进行巨大的打印输出,否则您将无法读取标签。