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.