Я пытаюсь построить много данных, используя подзаголовки, и у меня НЕ проблемы, но мне интересно, есть ли для этого удобный метод.
ниже приведен пример кода.
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])
Этот код перебирает двумерный массив подграфиков и останавливается на 21-м графике, оставляя 4 пустых панели. Мой вопрос в том, есть ли встроенный метод для выполнения этой задачи? Например, создайте массив 2D-подзаголовков и «сгладьте» массив в 1D, а затем выполните цикл по массиву 1D от 0 до 20.
Выражение во втором диапазоне() очень уродливое. Я не думаю, что буду использовать этот код. Я думаю, что тривиальный способ - подсчитать количество участков и сломать, если количество > 21. Но мне просто интересно, есть ли лучший (или причудливый) способ.