回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试着用子图绘制许多数据,我没有遇到麻烦,但我想知道是否有一种方便的方法来完成这项工作。在</p>
<p>下面是示例代码。在</p>
<pre><code>import numpy as np
import math
import matplotlib.pyplot as plt
quantities=["sam_mvir","mvir","rvir","rs","vrms","vmax"
,"jx","jy","jz","spin","m200b","m200c","m500c","m2500c"
,"xoff","voff","btoc","ctoa","ax","ay","az"]
# len(quantities) = 21, just to make the second loop expression
# shorter in this post.
ncol = 5
nrow = math.ceil(21 / ncol)
fig, axes = plt.subplots(nrows = nrow, ncols=ncol, figsize=(8,6))
for i in range(nrow):
for j in range(((21-i*5)>5)*5 + ((21-i*5)<5)*(21%5)):
axes[i, j].plot(tree[quantities[i*ncol + j]])
axes[i, j].set_title(quantities[i*ncol + j])
</code></pre>
<p>这段代码在一个2D子图数组上循环,并在第21个绘图处停止,留下4个面板为空。
我的问题是,有没有内置的方法来完成这个任务?
例如,制作2D子图数组并将数组“展平”为1D,然后在1D数组上循环0到20。在</p>
<p>第二个range()中的表达式非常难看。我不认为我会使用这个代码。
我认为最简单的方法是数数情节数,如果数到21就中断。
但我只是想知道有没有更好(或更奇特)的方法。在</p>