我正在使用 python(在 LinuxMint 中带有虚拟环境),我安装了
pygal
。
一切正常(渲染为 html),但无法渲染为 svg 或 png 。 结果:只有黑色背景。
我安装了
cssselect
和tinycss
,就像这里提到的那样。
第一次可以用,但重试时,我遇到了同样的问题。
(我不知道这是否相关,但是我上周使用 darktable 导出照片时发生了这种情况)
我使用的是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')
您还需要安装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
#Create a PNG file with Pygal
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 中打开该图像。
以防万一其他人遇到类似的情况,我的问题是 SVG 在浏览器中看起来很好,但在 Inkscape 中则不然。我使用自定义 CSS,并在某些元素上设置
fill: transparent
。应该是fill: none
。
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)
它对我有用。
我在尝试使用 Inkscape 转换 pygal 制作的 svgs 时遇到了这个问题。 Firefox 和 Chrome 可以很好地显示它们,但 Inkscape 会绘制黑色块。
我发现指定为
rgba(0, 0, 0, 0.9)
的颜色不适用于 inkscape,但 #f8fD00
可以使用。
我在pygal中选择了SolidColorStyle,它恰好只使用了#形式。