15

我想用 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)我不理解的相同的语法,等等。

你有解决方案吗?

谢谢

4

4 回答 4

15

试试这个:

fig, ax = plt.subplots(10, 10)

其中 ax 将在一个列表(列表)中包含一百个轴。

这是一个非常方便的功能,来自文档

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.
于 2012-11-13T17:33:15.257 回答
12

这是一个完整的代码解决方案,它显示了事物的编号方式,因为看起来人们仍然会来这里查看:

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 行子图):

Matplotlib 子图数组

编号显示您在每个位置将拥有的 i 和 j 值,因此您可以在 matplotlib 子图数组中按照您想要的方式排列。这包含了您想要的任何布局的数组中的子图。

于 2017-11-20T19:33:12.087 回答
9

你的例子几乎是正确的。请用:

for i in range(100):
    ax = plt.subplot(10,10,i)
    ax.plot(...)
于 2012-11-13T17:32:26.537 回答
4

如果您尝试生成约 100 个子图,则实际上您可能想做这样的事情它会运行得更快。您放弃了单独的轴标签,但有 100 个子图,除非您进行大量打印,否则您将无法阅读标签。

于 2012-11-13T23:02:29.627 回答