2014-06-29 18 views
13

Sto usando python (con un ambiente virtuale in LinuxMint), ho installato pygal.pygal rendering png/svg immagini nere

Tutto funziona correttamente (rendering in html) ma non il rendering in svg o png. Il risultato: nient'altro che uno sfondo nero.

Ho installato cssselect e tinycss come indicato here.

Funziona per la prima volta, ma quando riprovo, ho avuto lo stesso problema.

(non so se questo è collegato o no, ma questo succede a me quando si esporta una foto utilizzando Darktable la settimana scorsa)

Io uso l'esempio dal sito di 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') 

sta lavorando ora.

Ma non:

bar_chart.render_to_file('bar_chart.svg') 
+1

Stavo ottenendo immagini svg nere quando le stavo visualizzando in Gimp o il Visualizzatore immagini predefinito su Ubuntu. Le immagini si presentano bene quando le apro in Chrome. Non so perché questo sta accadendo però. –

risposta

26

È necessario installare lxml pure. Quindi, supponendo che si sono in un virtualenv eseguire il seguente comando sul prompt bash/zsh:

pip install lxml

Se avete solo gli altri 3 librerie, vale a dire cssselect, pycairo, tinycss. Allora si sarà in grado di rendere correttamente uno SVG ma il PNG render funzione produrrà un solido file di immagine in bianco (senza lxml installato)

Il succo seguente mostra tutti i passaggi:

[Primo: installare le librerie necessarie ]

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

[SECONDO: creare il file]

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

Se si ottiene immagini SVG nere nel visualizzatore di immagini (Ubuntu) o Gimp, provare ad aprire l'immagine in Chrome.

+1

In realtà questa è la risposta - Ho avuto lo stesso problema dell'autore della domanda ed è stato in grado di risolverlo con l'aiuto del commento di @emk. Grazie! –

+0

Se devi aprirlo in un determinato browswer per non sembrare una merda (io lo faccio), allora non funziona. Continuerò con Matplotlib fino a quando non risolveranno questo problema. – neuronet

1

Nel caso in cui qualcun altro incontri qualcosa di simile, il mio problema era che l'SVG sembrava buono in un browser, ma non in Inkscape. Stavo usando il css personalizzato e ho impostato fill: transparent su alcuni elementi. Dovrebbe essere fill: none.

0

1) Installare le dipendenze come documentato (http://pygal.org/en/stable/installing.html)

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

2) Creare grafico e rendere a presentare

line_chart.render_to_file(file_svg_name) 

3) Creazione di nuovo svg (utilizzando lo stesso file), ma utilizzando cairo lib

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

I Ho lavorato per me.