Я думаю, что вы пропустили ту часть кода, которая выполняет фактическое построение. Не могли бы вы добавить это или что-то представительное? Не видя этого, я предполагаю, что вы генерируете 3 цифры в каждом цикле, но, вызывая plt.savefig()
, вы ссылаетесь только на последнюю сгенерированную цифру. Например, если вы сделаете это:
for file in os.listdir(r'/mydir'):
data = # something that reads your .txt file into an array or dataframe
plt.figure()
plt.plot(data[0], data[1]) # first graph
plt.figure()
plt.scatter(data[0], data[2]) # second graph
plt.figure()
plt.hist(data[3]) # third graph
plt.savefig(f"file{file}.jpg") # f-strings are super cool!
Вы создадите 3 отдельные фигуры, но сохраните только последнюю, потому что вы на самом деле не указали, какую фигуру вы хотите сохранить. Переводчик предполагает, что вы заинтересованы в последней цифре. Быстрый способ обойти это - передать ваши цифры переменным, например так:
for file in os.listdir(r'/mydir'):
data = # something that reads your .txt file into an array or dataframe
fig1 = plt.figure()
plt.plot(data[0], data[1]) # first graph
fig2 = plt.figure()
plt.scatter(data[0], data[2]) # second graph
fig3 = plt.figure()
plt.hist(data[3]) # third graph
# now we can refer to the figures by variable name as save them
fig1.savefig(f"file{file}_1.jpg")
fig2.savefig(f"file{file}_2.jpg")
fig3.savefig(f"file{file}_3.jpg")
Теперь будут созданы те же 3 фигуры, но каждая из них будет сохранена отдельно. Однако я не фанат этого метода, потому что простой вызов plt.plot()
предполагает, что вы имеете в виду последнюю активную цифру. Что-то более явное не оставит места для ошибок, поэтому я очень предпочитаю следующее:
for file in os.listdir(r'/mydir'):
data = # something that reads your .txt file into an array or dataframe
# First create your figures and axes
fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()
fig3, ax3 = plt.subplots()
# Then plot your data on the specific axes
ax1.plot(data[0], data[1]) # first graph
ax2.scatter(data[0], data[2]) # second graph
ax3.hist(data[3]) # third graph
# now we can refer to the figures by variable name as save them
fig1.savefig(f"file{file}_1.jpg")
fig2.savefig(f"file{file}_2.jpg")
fig3.savefig(f"file{file}_3.jpg")
Вы также можете ссылаться на объекты ax1, ax2, ax3
matplotlib.axes
, чтобы изменить форматирование так, как вам хочется, и ничего не получитсяперепутать или положиться на порядок вы пишете в своем коде.