Python中pygal库在创建svg文件时报错 ValueError: Invalid PI name 'b'xml''

  在<<Python编程从入门到实践>>学习中,第15.4.6中对pyal库的使用报了一个错误。

  报错全部信息如下:

Traceback (most recent call last):
  File "die_visual.py", line 29, in <module>
    hist.render_to_file('die_visual.svg')
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\ghost.py", line 165, in render_to_file
    f.write(self.render(is_unicode=True, **kwargs))
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\ghost.py", line 122, in render
    .make_instance(overrides=kwargs)
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\ghost.py", line 116, in make_instance
    self.xml_filters)
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\graph\bar.py", line 37, in __init__
    super(Bar, self).__init__(*args, **kwargs)
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\graph\base.py", line 47, in __init__
    self.svg = Svg(self)
  File "C:\Users\lang\AppData\Roaming\Python\Python37\site-packages\pygal\svg.py", line 50, in __init__
    u('xml'), u("version='1.0' encoding='utf-8'"))]
  File "src/lxml/etree.pyx", line 3039, in lxml.etree.ProcessingInstruction
ValueError: Invalid PI name 'b'xml''

 书中的源码如下:

import pygal
from die import Die

#实例化D6
die = Die()
results=[]

for roll_number in range(1000):  #随机产生1000个
	results.append(die.roll())   #数据添加到列表中

#分析结果 记录每个出现的次数
frequencies=[]

for value in range(1,die.num_size+1):
	frequency=results.count(value) #统计value值在其中出现的次数
	frequencies.append(frequency)
	
print(frequencies)

#对结果进行可视化
hist=pygal.Bar()   #创建一个实例
hist.title="Results of rolling one D6 1000"  #字符串题目
hist.x_labels =['1','2','3','4','5','6']    #x轴的标签
hist.x_title = "Result"   #x轴的名字
hist.y_title = "Frequency of Result"   #y轴名字


hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')

只是在最后一句中才报错。

hist.render_to_file('die_visual.svg')

已查看成功安装导入了pygal包。

 

解决办法:

是由于pygal版本的原因造成了这个问题

在书中安装的命令为

python -m pip install --user pygal==1.7

安装的是1.7版本。

我们把他卸载了

pip uninstall pygal

安装一个稍微高一点一点的版本(好吧其实这个版本不高),就可以解决这个问题了。

python -m pip install --user pygal==2.3.1

最后展示一下自己的运行结果吧

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值