Фон Matplotlib savefig всегда прозрачныйPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Фон Matplotlib savefig всегда прозрачный

Сообщение Anonymous »

Проблема

Кажется, я не могу заставить 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему фон не удаляется, хотя у моего PNG прозрачный фон?
    Anonymous » » в форуме C#
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Matplotlib: savefig, «figsize», который больше не поддерживается в версии 3.3 и станет ошибкой в ​​версии 3.6». Какая ал
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Matplotlib savefig размер изображения с bbox_inches = 'Tight'
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Matplotlib savefig размер изображения с bbox_inches = 'Tight'
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Python – Как добавить прозрачный PNG в прозрачный PNG в Tkinter
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»