20

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

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

我安装cssselect并喜欢这里tinycss提到的。

它第一次工作,但重试时,我遇到了同样的问题。

(我不知道这是否相关,但是上周使用暗表导出照片时发生在我身上)

我使用 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

4 回答 4

31

您还需要安装 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')

如果您在 Image Viewer (Ubuntu) 或 Gimp 中获得黑色 svg 图像,请尝试在 Chrome 中打开该图像。

于 2014-08-18T09:29:46.733 回答
1

以防万一其他人遇到类似的情况,我的问题是 SVG 在浏览器中看起来不错,但在 Inkscape 中却没有。我正在使用自定义 css,并设置fill: transparent了一些元素。应该是fill: none

于 2017-05-19T13:06:08.753 回答
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)

它对我有用。

于 2017-11-04T00:19:20.207 回答
0

尝试使用 Inkscape 转换 pygal 制作的 svg 时遇到了这个问题。Firefox 和 chrome 可以很好地显示它们,但 Inkscape 会绘制一个黑色块。

我发现指定为的颜色rgba(0, 0, 0, 0.9)不适用于inkscape,但#f8fD00确实有效。

我在 pygal 中选择了 SolidColorStyle,它恰好只使用了#-form。

于 2020-04-17T14:20:13.643 回答