使用matplotlib进行多重绘图,在运行前不知道绘图的数量

tar*_*sch 6 matplotlib subplot

我有问题,matplotlib subplot困惑我.我不知道我想事先绘制的子图的数量,但我知道我想要它们分为两行.所以我不能用

plt.subplot(212)
Run Code Online (Sandbox Code Playgroud)

因为我不知道我应该提供的号码.

它应该如下所示:

情节的例子

现在我将所有的情节绘制成一个文件夹并将它们与插图画家放在一起,但是matplotlib必须有更好的方法.如果我某处不清楚,我可以提供我的代码.

pel*_*son 8

我的理解是你只知道运行时的绘图数量,因此正在努力使用简写语法,例如:

plt.subplot(121)
Run Code Online (Sandbox Code Playgroud)

值得庆幸的是,为了节省您不得不做一些笨拙的数学以编程方式计算出这个数字,还有另一个允许您使用表单的界面:

plt.subplot(n_cols, n_rows, plot_num)
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,如果你想要n情节,你可以这样做:

n_plots = 5 # (or however many you programatically figure out you need)
n_cols = 2
n_rows = (n_plots + 1) // n_cols
for plot_num in range(n_plots):
   ax = plt.subplot(n_cols, n_rows, plot_num)
   # ... do some plotting
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望了解更多pythonic界面:

fig, subplots = plt.subplots(n_cols, n_rows)
for ax in subplots:
   # ... do some plotting
Run Code Online (Sandbox Code Playgroud)

(请注意,这subplots()不是普通的subplot()).虽然我必须承认,我从未使用过后一种界面.

HTH