У меня проблема с фоном рисунков matplotlib, когда они встроены в HTML страницы различных цветов фона.
Я сохраняю рисунки в виде файлов PNG или SVG и встраиваю их в HTML с помощью img тег. Это работает; Я вижу диаграмму на веб-странице.
Фон рисунка, отображаемый на странице HTML, должен совпадать с фоном страницы, поэтому я делаю рисунок прозрачным с помощью fig.savefig(filename, transparent=True)
.
Это хорошо работает с основной частью фигуры, но не над легендой. Это потому, что я хочу, чтобы легенда скрывала все содержимое диаграммы за ней (быть непрозрачной для диаграммы, см. Ниже), но позже, когда она встроена в страницу, фону легенды необходимо разрешить цвет фона страницы HTML. просвечивать. Ниже приведены примеры. Конечно, это не реальные диаграммы. Они только для иллюстрации проблемы прозрачности.
Нежелательные:
серый HTML фон, прозрачная диаграмма, непрозрачная легенда:
ax.legend(..., framealpha=1)
Рис. 1
Еще хуже:
серый HTML фон, прозрачная диаграмма, прозрачная легенда:
ax.legend(..., framealpha=0)
![grey HTML background, transparent diagram, transparent legend](https://i.stack.imgur.com/SX0Qz.png)
Рис. 2
Как это должно выглядеть:
Используя трюк, чтобы сделать легенду непрозрачной и использовать серый цвет лица, я могу добиться желаемого вида на сером фоне:
ax.legend(..., facecolor='lightgrey', framealpha=1)
![desired colors on the grey background](https://i.stack.imgur.com/2Z5af.png)
Рис. 3
Не переносимо:
Но опять же, когда на странице с белым фоном, Я получаю ту же проблему, что и на рис. 1, только с замененными цветами:
![same problem like in Fig. 1, just with swapped colors](https://i.stack.imgur.com/jB8tB.png)
Рис. 4
Использование этого обходного пути заставит меня сгенерировать цифры отдельно для всех HTML цветов фона, и мне нужно будет восстанавливать фигуры при изменении цвета фона страницы HTML.
Есть ли лучше способ