Кажется, я не могу заставить savefig() фактически сохранить файл PNG без прозрачного фона фигуры.
Это значит прочитать и опробовать все ранее опубликованные предложения, ответить на них, ругаться, а также несколько раз просмотреть документацию по API. Я все это прочитал, но не могу получить непрозрачные лица фигур
Фон
Я использую matplotlib и savefig для создания PNG-файла. (env: macos — последние модули anaconda, использующие PY 3.7).
Однако я пробую это из Jupyter — так что, надеюсь, это не что-то полностью испорченное только с тем, как ipython в jupyter делает это - хотя я не понимаю, как это могло быть так
Я прочитал множество предыдущих постов о (чертовски запутанной) природе сохранения риса с фоном дело по-своему, и я делал/пробовал все, как предлагалось (и как написано в последней документации API savefig).
В частности, я безуспешно пробовал все следующее:
- указание цвета лица в вызове savefig() (с прозрачностью или без нее)
- savefig.facecolor: белый в стиле файла mpl Я используя
Может кто-нибудь сказать мне, что за !@#$!# меня здесь не хватает???
Код
Вот что я использую, который выдает рисунок с прозрачный фон, независимо от того, что я делаю.
В частности, второй вызов ниже (с savefig(..., Transparent=False)) создаст оси не прозрачны - но сама фигура все равно прозрачна!)
import numpy as np
import matplotlib as mpl
import matplotlib.style as style
a = np.array([-3.2, 0.1, 1.5, 3.3, 8.5])
b = np.array([1.1, 1.8, 1.95, 2.3, 4.3])
labels = ['a', 'bc', 'def', 'g', 'ggghhh']
stylefile = './util/plot_config/aqs_default.mplstyle'
# the file above does contain an entry of:
# savefig.facecolor: white
#
to_res = 1024
dpi = 100
inches = (to_res/dpi, to_res/dpi)
style.use(stylefile)
%matplotlib
fig = mpl.figure.Figure(figsize=inches, dpi=dpi, facecolor='white')
ax = fig.subplots()
for x, y, l in zip(a,b,labels):
ax.scatter(x,y,label=l)
ax.legend()
ax.set_xlabel('Some x')
ax.set_ylabel('Attenuation $\mu$ (cm$^{-1}$)')
ax.set_title('blah', y=1.03)
fig.suptitle('Linearity $\mu$')
# for me, _both_ calls below result in the figure having a transparent background:
fig.savefig('a.png', facecolor=fig.get_facecolor(), transparent=True)
fig.savefig('b.png', facecolor=fig.get_facecolor(), transparent=False)
Подробнее здесь: https://stackoverflow.com/questions/592 ... ransparent