python svg rendering data-visualization pygal

python - pygal rendering png/svg imágenes en negro



data-visualization (3)

Estoy usando python (con un env virtual en LinuxMint), instalé pygal .

Todo funciona bien (renderizado a html) pero no renderizado a svg o png. El resultado: nada más que un fondo negro.

Instalé cssselect y tinycss como se menciona here .

Funciona por primera vez, pero al volver a intentarlo, tuve el mismo problema.

(No sé si esto está relacionado o no, pero esto me sucede al exportar una foto con darktable la semana pasada)

Utilizo el ejemplo del sitio web de 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

EDITAR:

bar_chart.render_to_png(''bar_chart.png'')

esta trabajando ahora

Pero no:

bar_chart.render_to_file(''bar_chart.svg'')


1) Instale las dependencias como se documenta ( http://pygal.org/en/stable/installing.html )

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

2) Crear gráfico y renderizar a archivo.

line_chart.render_to_file(file_svg_name)

3) Crea svg nuevamente (usando el mismo archivo), pero usando cairo lib

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

Funciono para mi


En caso de que alguien más encuentre algo similar, mi problema era que el SVG se veía bien en un navegador, pero no en Inkscape. Estaba usando css personalizado y configurando fill: transparent en algunos elementos. Se debe fill: none .


Necesitas instalar lxml también. Entonces, asumiendo que está en un virtualenv, ejecute el siguiente comando en su indicador bash / zsh:

pip install lxml

Si solo tiene las otras 3 bibliotecas, es decir, cssselect, pycairo, tinycss. Entonces podrá procesar correctamente un SVG, pero la función de procesamiento PNG producirá un archivo de imagen negro sólido (sin lxml instalado)

La siguiente lista muestra todos los pasos:

[PRIMERO: instale las bibliotecas requeridas]

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

[SEGUNDO: crea el archivo]

""" 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'')

Si obtienes imágenes svg en negro en el Visor de imágenes (Ubuntu) o Gimp, intenta abrir la imagen en Chrome.