首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pygal渲染png/svg黑色图片

pygal渲染png/svg黑色图片
EN

Stack Overflow用户
提问于 2014-06-29 12:21:09
回答 4查看 9.8K关注 0票数 20

我使用python (在LinuxMint中有一个虚拟env ),我安装了pygal

一切都很好(呈现到html),但不呈现到svg或png。其结果是:除了黑色背景,什么都没有。

我安装了cssselecttinycss,就像前面提到的here一样。

这是第一次起作用,但当我重新尝试时,我也遇到了同样的问题。

(我不知道这是否相关,但这发生在我上个星期用暗色照片导出照片时)

我使用了pygal网站上的示例:

代码语言:javascript
复制
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

编辑:

代码语言:javascript
复制
bar_chart.render_to_png('bar_chart.png')

现在起作用了。

但不是:

代码语言:javascript
复制
bar_chart.render_to_file('bar_chart.svg')
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-18 09:29:46

您还需要安装lxml。因此,假设您处于虚拟环境中,那么在bash/zsh提示符上运行以下命令:

pip install lxml

如果您只有其他3个库,即cssselect、pycairo、tinycss。然后,您将能够正确地呈现一个SVG,但是PNG呈现函数将生成一个坚实的黑色图像文件(没有安装lxml )。

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

首先:安装所需的库

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

第二:创建文件

代码语言:javascript
复制
"""
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中打开该图像。

票数 31
EN

Stack Overflow用户

发布于 2017-05-19 13:06:08

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

票数 1
EN

Stack Overflow用户

发布于 2017-11-04 00:19:20

1)安装文档中的依赖项(http://pygal.org/en/stable/installing.html)

代码语言:javascript
复制
pip install lxml
pip install cairosvg
pip install tinycss
pip install cssselect

2)创建图表并呈现为文件

代码语言:javascript
复制
line_chart.render_to_file(file_svg_name)

3)再次创建svg (使用相同的文件),但使用cairo

代码语言:javascript
复制
import cairosvg
cairosvg.svg2svg(url=file_svg_name, write_to=file_svg_name)

对我起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24476029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档