Подтвердить что ты не робот

Как экспортировать графики из matplotlib с прозрачным фоном?

Я использую matplotlib для создания некоторых графиков, и, к сожалению, я не могу экспортировать их без белого фона.

sample plot with solid white background

Другими словами, когда я экспортирую такой сюжет и позиционирую его поверх другого изображения, белый фон скрывает то, что стоит за ним, а не позволяет ему показывать. Как я могу экспортировать графики с прозрачным фоном?

4b9b3361

Ответ 1

Используйте функцию matplotlib savefig с аргументом ключевого слова transparent=True, чтобы сохранить изображение в виде файла png.

In [30]: x = np.linspace(0,6,31)

In [31]: y = np.exp(-0.5*x) * np.sin(x)

In [32]: plot(x, y, 'bo-')
Out[32]: [<matplotlib.lines.Line2D at 0x3f29750>]            

In [33]: savefig('demo.png', transparent=True)

Результат: demo.png

Конечно, этот сюжет не демонстрирует прозрачность. Вот скриншот файла PNG, отображаемого с помощью команды ImageMagick display. Шаблон шахматной доски - это фон, который отображается через прозрачные части файла PNG.

display screenshot

Ответ 2

Файлы Png могут обрабатывать прозрачность. Таким образом, вы можете использовать этот вопрос Сохранить график в файл изображения вместо отображения его с помощью Matplotlib, чтобы сохранить график в виде файла png.

И если вы хотите, чтобы весь белый пиксель был прозрачным, есть еще один вопрос: Использование PIL для прозрачности всех белых пикселей?

Если вы хотите превратить всю область в прозрачную, то есть этот вопрос: а затем используйте библиотеку PIL, как в этом вопросе Python PIL: как сделать область прозрачной в PNG?, чтобы сделать ваш график прозрачным.