Я получаю эту ошибку при попытке построить в цикле. Это происходит в попытке / за исключением того, что я не получаю полную трассировку стека, просто "не удалось выделить растровое изображение" и программа завершается. Из того, что я вижу, это ошибка matplotlib, и люди предлагают запустить clf (), которой я являюсь. Я строю большие объемы данных, но не думаю, что этого должно быть достаточно, чтобы все испортить. во всяком случае, здесь в основном код.
def plot_data(data):
pyplot.clf()
buys_X, buys_y, sells_X, sells_y = [], [], [], []
for index, row in data.iterrows():
if row['action'] == 'BUY':
buys_X.append(row['time'])
buys_y.append(row['price'])
elif row['action'] == 'SELL':
sells_X.append(row['time'])
sells_y.append(row['price'])
data_cols = ['prof', 'price', 'quantity', 'pred']
fig, axs = pyplot.subplots(len(data_cols), 1, constrained_layout=True, figsize=(15, 12))
for idx, col in enumerate(data_cols):
if col == 'price':
axs[idx].plot(data['time'], data[col], linewidth=0.75)
axs[idx].scatter(buys_X, buys_y, color='red', s=12.5)
axs[idx].scatter(sells_X, sells_y, color='green', s=12.5)
elif col == 'pred':
axs[idx].plot(data['time'], data['curr_ratio'], label='curr_ratio')
axs[idx].plot(data['time'], data['pred'], label='pred')
axs[idx].axhline(0.5, color='black')
axs[idx].legend()
elif col == 'prof':
axs[idx].plot(data['time'], data[col])
axs[idx].axhline(0, color='black')
elif col == 'quantity':
axs[idx].plot(data['time'], data[col])
axs[idx].set_title(col)
axs[idx].xaxis.grid(True)
if idx == len(data_cols) - 1:
for tick in axs[idx].get_xticklabels():
tick.set_rotation(45)
else:
axs[idx].xaxis.set_ticklabels([])
pyplot.savefig('plots.png', dpi=100)
Так что я запускаю это в цикле и поставляю фрейм данных для функции. Каждый раз, когда я добавляю строку, я делаю новый график, и каждую минуту добавляется новый ряд. Однако я получаю эту ошибку примерно через 3-4 часа после запуска моей программы. Любые идеи, почему это происходит и что я могу сделать, чтобы это исправить? Я попытался снизить dpi, и это, кажется, помогает, но я не уверен, что это что-то, что может быть связано с ошибкой.