pygal渲染png / svg黑色图片

时间:2014-06-29 12:21:09

标签: python svg rendering data-visualization pygal

我正在使用python(在LinuxMint中使用虚拟环境),我安装了pygal

一切正常(渲染为html)但不渲染为svg或png。 结果:只有黑色背景。

我安装了cssselecttinycss,如提到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')

4 个答案:

答案 0 :(得分:28)

您还需要安装lxml。因此,假设您使用的是virtualenv,请在bash / zsh提示符下运行以下命令:

pip install lxml

如果你只有其他3个库,即cssselect,pycairo,tinycss。然后你就可以正确渲染一个SVG,但是PNG渲染功能会生成一个纯黑色图像文件(没有安装lxml)

下面的要点显示了所有步骤:

[FIRST:安装所需的库]

  • 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,而这恰好只使用#形式。