Как заставить matplolib выводить SVG с непрозрачностью заполнения вместо непрозрачности - PullRequest
1 голос
/ 05 марта 2020

У меня была проблема с получением прозрачности для работы при экспорте PDF с помощью jasper с использованием SVG: Экспорт Jasper в PDF с прозрачным SVG

Вопрос в том, как заставить matplotlib экспортировать SVG с Заполните непрозрачность вместо просто непрозрачности.

1 Ответ

0 голосов
/ 05 марта 2020

Я нашел источник matplotlib, относящийся к SVG, здесь: matplotlib svg backend

Я нашел это:

            if (rgbFace is not None and len(rgbFace) == 4 and rgbFace[3] != 1.0
                and not forced_alpha):
            attrib['fill-opacity'] = short_float_fmt(rgbFace[3])

И это:

                if (len(rgbFace) == 4 and rgbFace[3] != 1.0
                    and not forced_alpha):
                attrib['fill-opacity'] = short_float_fmt(rgbFace[3])

Это выглядело многообещающе, и я начал тестировать, как заставить этот код выполняться. Оказалось, вам нужно отключить прозрачность (альфа)! Кроме того, вы должны использовать RGBA вместо RGB hex для цвета. В моем случае я хотел полупрозрачные коробки вокруг легенд, и у меня изначально было:

bbox_args = dict(boxstyle="square", fc="W", alpha=0.5)

Чтобы заставить его работать, я изменил его на:

bbox_args = dict(boxstyle="square", fc="#FFFFFF80")

После этого, Экспортированный SVG имеет непрозрачность заполнения вместо непрозрачности. Обратите внимание, что и непрозрачность, и непрозрачность заполнения могут работать в вашем случае. В Chrome оба работали, но в pdf, экспортированном из jasperreports, работала только непрозрачность заполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...