Как задать внешний bg-цвет графика в matplotlib

#python #matplotlib

#python #matplotlib

Вопрос:

Приветствия,

Я хочу изменить ВНЕШНИЙ цвет графика в matplotlib. Я могу найти МНОГО-МНОГО ПРИМЕРОВ того, как изменить внутренний bg-цвет, но внешний bg-цвет отказывается меняться.

Белая часть изображения — это то, что я подразумеваю под «внешним» фоном. Крайний внешний цвет предназначен только для того, чтобы ограничить белый цвет, чтобы он не сливался с фоном переполнения стека и не был частью графика. диаграмма.

Диаграмма

Я пытался использовать set_facecolor() , чтобы изменить его, но это не работает.

 # Setting up data
x = list(history['daily'].keys())[-30*months:]
x_av = list(history['average'].keys())[-30*months:]
y = list(history['daily'].values())[-30*months:]
y_av = list(history['average'].values())[-30*months:]

# Setting up figure
fig = pyplot.figure()
fig.set_figheight(6)
fig.set_figwidth(12)

# Formatting figure
fig.patch.set_antialiased(True)

# Setting up axis
ax = fig.add_subplot(111, axisbg='#2e3136')
ax.plot(x, y, '#e1bb34', x_av, y_av, '#b2dbee')

# Formatting axis
ax.get_yaxis().grid(color='#3e4146', linestyle='-')
ax.get_xaxis().grid(color='#3e4146', linestyle='-')

ax.spines['bottom'].set_color('#1e2124')
ax.spines['top'].set_color('#1e2124')
ax.spines['left'].set_color('#1e2124')
ax.spines['right'].set_color('#1e2124')

ax.get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda _y, p: '{:,}'.format(_y)))
ax.get_xaxis().set_major_formatter(ticker.FuncFormatter(lambda _x, p: datetime.fromtimestamp(_x/1000.0).strftime('%b %d')))

[i.set_color('white') for i in pyplot.gca().get_xticklabels()]
[i.set_color('white') for i in pyplot.gca().get_yticklabels()]

buf = BytesIO()
fig.savefig(buf, format='png', bbox_inches='tight')
pyplot.close()
buf.seek(0)
  

Ответ №1:

Вы должны быть в состоянии установить facecolor в качестве kwarg значение savefig , это гарантирует, что оно будет установлено при записи изображения.

 fig.savefig(buf, format='png', bbox_inches='tight', facecolor='#2e3136')
  

Чтобы извлечь цвет из оси:

 fig.savefig(buf, format='png', bbox_inches='tight', facecolor=ax.get_axis_bgcolor())