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

Pgg png/svg black pictures

Я использую python (с виртуальным env в LinuxMint), я установил pygal.

Все работает отлично (рендеринг в html), но не рендеринг в svg или png. Результат: ничего, кроме черного фона.

Я установил cssselect и tinycss, как упоминалось здесь.

Он работает впервые, но при повторной попытке у меня была та же проблема.

(Я не знаю, связано это или нет, но это происходит со мной при экспорте фотографии с использованием темного стола на прошлой неделе)

Я использую пример с сайта pygal:

import pygal                                                       # First import pygal
bar_chart = pygal.Bar()                                            # Then create a bar graph object
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])  # Add some values
bar_chart.render_to_file('bar_chart.svg')                          # Save the svg to a file

EDIT:

bar_chart.render_to_png('bar_chart.png')

теперь работает.

Но не:

bar_chart.render_to_file('bar_chart.svg')
4b9b3361

Ответ 1

Вам также нужно установить lxml. Итак, предположим, что вы находитесь в виртуальной перспективе, выполните следующую команду в своем приглашении bash/zsh:

pip install lxml

Если у вас есть только 3 библиотеки, т.е. cssselect, pycairo, tinycss. Затем вы сможете правильно отобразить SVG, но функция рендеринга PNG создаст сплошной черный файл изображения (без установленного lxml).

Ниже представлен список всех шагов:

[FIRST: установите необходимые библиотеки]

  • pip install lxml
  • pip install cairosvg
  • pip install tinycss
  • pip install cssselect

[SECOND: создать файл]

"""
pygal_render_png
""""
import pygal

bar_chart = pygal.Bar()
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
bar_chart.render_to_file('bar_chart.svg')
bar_chart.render_to_png(filename='bar_chart.png')

Если вы получаете черные изображения svg в Image Viewer (Ubuntu) или Gimp, попробуйте открыть изображение в Chrome.

Ответ 2

На всякий случай кто-то сталкивается с чем-то похожим, моя проблема заключалась в том, что SVG выглядел отлично в браузере, но нет в Inkscape. Я использовал пользовательский css и установил fill: transparent для некоторых элементов. Это должно быть fill: none.

Ответ 3

1) Установите зависимости как задокументированные (http://pygal.org/en/stable/installing.html)

pip install lxml
pip install cairosvg
pip install tinycss
pip install cssselect

2) Создайте диаграмму и сделайте файл

line_chart.render_to_file(file_svg_name)

3) Создайте svg снова (используя тот же файл), но используя cairo lib

import cairosvg
cairosvg.svg2svg(url=file_svg_name, write_to=file_svg_name)

Это сработало для меня.