#python-3.x #matplotlib
#python-3.x #matplotlib
Вопрос:
Я пытаюсь написать функцию, такую, чтобы она создавала несколько гистограмм (используя matplotlib.pyplot), используя цикл for для некоторых данных. Я добавляю эти графики в список, и список возвращается. Но когда я пытаюсь использовать show() на каждом из графиков, все они представляют собой один и тот же график, и все графики перезаписываются.
Я пробовал использовать plt.clf() в конце цикла for, но у меня это не работает.
for data in data_list:
n, bins, patches = plt.hist(x=data, bins='auto', color=color,
alpha=0.7, rwidth=0.85)
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.grid(axis='y', alpha=0.55)
plots.append(plt)
Ответ №1:
Во-первых, возможно, нам следует задать вопрос о необходимости: почему вы хотите сохранить все графики под рукой? Почему бы не сохранить их после построения plt.savefig('xxxxx')
графика? Планируете ли вы анимировать все фигуры?
Во-вторых, если мы хотим сохранить все цифры, subplots
это может быть удобным инструментом. Обратите внимание, что вы все еще строите график на одном графике, но вызов subplots
создает несколько осей и позволяет им не мешать друг другу. Попробуйте это:
import matplotlib.pyplot as plt
np.random.seed(0)
data_list = [np.random.randn(10) for _ in range(4)]
plots=[]
fig, axes = plt.subplots(4,1)
for i,data in enumerate(data_list):
n, bins, patches = axes[i].hist(x=data, bins='auto',
alpha=0.7, rwidth=0.85)
axes[i].set_xlabel('Values')
axes[i].set_ylabel('Frequency')
axes[i].grid(axis='y', alpha=0.55)
Для получения дополнительной информации о subplots
Для получения дополнительной информации о нескольких фигурах