2014-06-29 5 views
13

Ich benutze Python (mit einem virtuellen env in LinuxMint), ich habe pygal installiert.pygal rendering png/svg schwarze Bilder

Alles funktioniert gut (Rendering zu HTML), aber nicht zu Svg oder PNG Rendering. Das Ergebnis: Nichts als ein schwarzer Hintergrund.

Ich installierte cssselect und tinycss wie erwähnt here.

Es funktioniert zum ersten Mal, aber beim erneuten Versuch hatte ich das gleiche Problem.

(ich weiß nicht, ob dies verwandt ist oder nicht, aber das passiert mir, wenn Sie ein Foto mit darktable letzter Woche Export)

Ich verwende das Beispiel von der Website von 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') 

arbeitet jetzt.

aber nicht:

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

Ich bekam schwarze SVG-Bilder, wenn ich sie in Gimp oder den Standard-Bildbetrachter auf Ubuntu sah. Die Bilder erscheinen gut, wenn ich sie in Chrome öffne. Ich weiß nicht, warum das so ist. –

Antwort

26

Sie müssen auch lxml installieren. Also vorausgesetzt, Sie in einem virtualenv sind den folgenden Befehl auf Ihrem bash/zsh prompt:

pip install lxml

Wenn Sie nur die anderen drei Bibliotheken haben, das heißt cssselect, pycairo, tinycss. Dann werden Sie in der Lage sein, um richtig einen SVG zu machen aber die PNG Render-Funktion eine solide schwarze Bilddatei erzeugen wird (ohne lxml installiert)

Der Kern zeigt alle Schritte:

[FIRST: Installieren Sie die erforderlichen Bibliotheken

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

[ZWEITE: Erstellen Sie die Datei]

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

Wenn Sie schwarz svg Bilder in Image Viewer (Ubuntu) oder Gimp, versuchen Sie das Bild in Chrome zu öffnen.

+1

Eigentlich ist das die Antwort - ich habe das gleiche Problem wie der Fragesteller und konnte es mit Hilfe von @emks Kommentar lösen. Vielen Dank! –

+0

Wenn Sie es in einem bestimmten Browser öffnen müssen, damit es nicht wie Mist aussieht (ich tue), dann funktioniert es einfach nicht. Ich bleibe bei Matplotlib, bis sie das herausfinden. – neuronet

1

Nur für den Fall, dass jemand anderes auf etwas Ähnliches stößt, war mein Problem, dass die SVG in einem Browser gut aussah, aber nicht in Inkscape. Ich habe benutzerdefinierte CSS verwendet und fill: transparent für einige Elemente festgelegt. Es sollte fill: none sein.

0

1) Installieren der Abhängigkeiten wie dokumentiert (http://pygal.org/en/stable/installing.html)

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

2) Diagramm erstellen und rendern

line_chart.render_to_file(file_svg_name) 

3) erneut erstellen SVG-Datei (die gleiche Datei), aber mit kairo lib

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

I Das hat für mich funktioniert.