2014-06-29 39 views
13

Python kullanıyorum (LinuxMint'te sanal bir env ile), pygal'u yükledim.pygal oluşturma png/svg siyah resimleri

Her şey iyi çalışıyor (html'ye işleniyor) ancak svg veya png'ye işlenmiyor. Sonuç: Hiçbir şey siyah bir arka plan değil.

Belirtilen here gibi cssselect ve tinycss yükledim.

İlk kez çalışıyor, ancak yeniden denediğinizde aynı sorunu yaşadım.

(bu ilişkili olup olmadığını bilmiyorum, ama darktable geçen hafta kullanarak fotoğraf dışa aktarırken bu benim başıma)

Ben pygal ait web sitesinden örneğini kullanın:

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 

DÜZENLEME:

bar_chart.render_to_png('bar_chart.png') 

şimdi çalışıyor.

Ama:

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

Ben Gimp veya Ubuntu varsayılan Image Viewer'da görüntülerken ben siyah svg görüntüleri oluyordu. Chrome'da açtığımda görüntüler iyi görünüyor. Bunun neden olduğunu bilmiyorum. –

cevap

26

Siz de LXML yüklemeniz gerekir. Yani bir virtualenv olduğunu varsayarak senin bash/zsh isteminde aşağıdaki komutu çalıştırın:

pip install lxml

yalnızca diğer 3 kütüphaneleri varsa, yani cssselect, pycairo, tinycss. Sonra düzgün bir SVG oluşturabilmek mümkün olacaktır fakat PNG

aşağıda özü tüm adımları gösteren fonksiyonu (yüklü LXML olmadan) bir katı siyah resim dosyası üretecektir işlemek:

[İLK: yüklemek gerekli kütüphaneleri ]

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

: Eğer Image Viewer (Ubuntu) veya Gimp siyah svg görüntüleri alırsanız [İKİNCİ oluşturmak dosya]

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

, Chrome'da görüntüyü açmayı deneyin.

+1

Aslında bu cevaptır - soru yazarıyla aynı sorunu yaşadım ve bunu @emk'in yorumuyla çözebiliyordum. Teşekkür ederim! –

+0

Belirli bir tarayıcıda açmak zorunda kalmazsanız, bunun bir bok gibi görünmemesi gerekir (o zaman), o zaman işe yaramıyor. Çalışana kadar matplotlib ile yapışacağım. – neuronet

1

Başka birinin benzer bir şeyle karşılaşması durumunda, benim sorunum SVG'nin tarayıcıda iyi göründüğü, ancak Inkscape'de bulunmamasıydı. Özel css kullanıyordum ve bazı öğeler üzerinde fill: transparent ayarlıyordum. fill: none olmalıdır.

0
),
pip install lxml 
pip install cairosvg 
pip install tinycss 
pip install cssselect 

2 (http://pygal.org/en/stable/installing.html)

) grafik oluşturma belgelendiği gibi bağımlılıkları kurun ve)

line_chart.render_to_file(file_svg_name) 

3 dosya aynı dosyayı) kullanılarak (yine svg oluşturma içinde oluşturulur, ancak kullanarak sıfırlama

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

I Benim için çalıştı.