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

108

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

образец участка со сплошным белым фоном

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

Купитор
источник

Ответы:

178

Используйте savefigфункцию matplotlib с аргументом ключевого слова, 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.

отображать снимок экрана

Уоррен Векессер
источник
2

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

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

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

Стефан Роллан
источник
Спасибо, но это не помогает. Я знал, что png может быть прозрачным, но вывод matplotlib - нет. Кроме того, ваше предложение касается только случая, когда вы хотите удалить прямоугольники. Я хочу, чтобы мой сюжет был сохранен, а мой фон был удален.
Cupitor
2
Насколько я помню, вы установили прозрачный цвет в png. файл. Установите белый цвет в качестве цвета прозрачности, и готово.
Стефан Роллан
Я полагаю, 255 белый, и когда я использую его, я теряю свой участок!
Cupitor
это странно. только ваши сюжеты? график черным, единицы - черным и синяя кривая тоже?
Стефан Роллан
1
есть вопрос о превращении всего белого пикселя в прозрачность (без использования маски, как я связал с вами) stackoverflow.com/questions/765736/…
Стефан Роллан