我正在使用python(在LinuxMint中使用虚拟环境),我安装了pygal
。
一切正常(渲染为html)但不渲染为svg或png。 结果:只有黑色背景。
我安装了cssselect
和tinycss
,如提到here。
这是第一次有效,但在重试时,我遇到了同样的问题。
(我不知道这是否相关,但在上周使用深色表格导出照片时会发生这种情况)
我使用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
修改
bar_chart.render_to_png('bar_chart.png')
现在正在运作。
但不是:
bar_chart.render_to_file('bar_chart.svg')
答案 0 :(得分:28)
您还需要安装lxml。因此,假设您使用的是virtualenv,请在bash / zsh提示符下运行以下命令:
pip install lxml
如果你只有其他3个库,即cssselect,pycairo,tinycss。然后你就可以正确渲染一个SVG,但是PNG渲染功能会生成一个纯黑色图像文件(没有安装lxml)
下面的要点显示了所有步骤:
pip install lxml
pip install cairosvg
pip install tinycss
pip install cssselect
"""
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')
如果您在图像查看器(Ubuntu)或Gimp中获得黑色svg图像,请尝试在Chrome中打开图像。
答案 1 :(得分:1)
万一其他人遇到类似的东西,我的问题是SVG在浏览器中看起来很好,但在Inkscape中没有。我使用自定义css,并在某些元素上设置fill: transparent
。它应该是fill: none
。
答案 2 :(得分:1)
1)按照文档(http://pygal.org/en/stable/installing.html)
安装依赖项pip install lxml
pip install cairosvg
pip install tinycss
pip install cssselect
2)创建图表并渲染到文件
line_chart.render_to_file(file_svg_name)
3)再次创建svg(使用相同的文件),但使用cairo lib
import cairosvg
cairosvg.svg2svg(url=file_svg_name, write_to=file_svg_name)
它对我有用。
答案 3 :(得分:0)
当尝试使用Inkscape转换pygal制造的svg时遇到了这个问题。 Firefox和chrome可以很好地显示它们,但是Inkscape会绘制黑色块。
我发现指定为rgba(0, 0, 0, 0.9)
的颜色不适用于inkscape,但是#f8fD00
可以起作用。
我在pygal中选择了SolidColorStyle,而这恰好只使用#形式。