Итак, проблема с использованием парного графика, как вы делаете, заключается в том, что на каждой итерации цикла создается новая фигура и присваивается g
.
Если вы берете свою последнюю строку кода g.savefig('output.png')
, вне цикла, на диск сохраняется только последняя версия g
, и это та, в которой есть только три последних подзаговора.
Если вы поместите эту строку в петлю, все фигуры будут сохранены на диск, но под тем же именем, а последняя, конечно, снова будет цифрой с тремя подзаговорами в ней.
Способ обойти это - создать фигуру и назначить ей все вспомогательные участки по мере их появления, а затем сохранить эту фигуру на диске:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
# generate random data, with 18 columns
dic = {str(a): np.random.randint(0,10,10) for a in range(18)}
df = pd.DataFrame(dic)
# rename first column of dataframe
df.rename(columns={'0':'totCost'}, inplace=True)
#instantiate figure
fig = plt.figure()
# loop through all columns, create subplots in 5 by 5 grid along the way,
# and add them to the figure
for i in range(len(df.columns)):
ax = fig.add_subplot(5,5,i+1)
ax.scatter(df['totCost'], df[df.columns[i]])
ax.set_xticklabels([])
plt.tight_layout()
fig.savefig('figurename.png')