鱼C论坛

 找回密码
 立即注册
查看: 2201|回复: 6

[已解决]已安装pygal。但用python生成svg文件时报错,请问如何解决

[复制链接]
发表于 2020-10-25 16:15:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错代码如下:
  1. Traceback (most recent call last):
  2.   File "die_visual.py", line 22, in <module>
  3.     hist.render_to_file('die_visual.svg')
  4.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\public.py", line 114, in render_to_file
  5.     f.write(self.render(is_unicode=True, **kwargs))
  6.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\public.py", line 52, in render
  7.     self.setup(**kwargs)
  8.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\base.py", line 217, in setup
  9.     self._draw()
  10.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\graph.py", line 930, in _draw
  11.     self._compute_margin()
  12.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\graph.py", line 706, in _compute_margin
  13.     self._x_title = split_title(
  14.   File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\util.py", line 329, in split_title
  15.     title_lines = title.split("\n")
  16. AttributeError: 'list' object has no attribute 'split'
复制代码
最佳答案
2020-10-25 17:10:03
张图南 发表于 2020-10-25 17:03
完全按照《Python编程》书的来,两个掷骰子的py文件都是最后一行有问题。pygal是可以用的,我在网上抄了 ...

die_visual.py 第 18 行,把方括号去掉试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 16:34:15 | 显示全部楼层
本帖最后由 hrp 于 2020-10-25 17:11 编辑

AttributeError: 'list' object has no attribute 'split':
从报错猜测 title 变量是一个列表,而列表没有split方法,所以报错了。

建议发代码,方便鱼油帮你解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 17:01:02 | 显示全部楼层
代码如下:
这是die.py
  1. from random import randint

  2. class Die():
  3.     """a class of die"""
  4.    
  5.     def __init__(self,num_sides=6):
  6.         """default 6 sides"""
  7.         self.num_sides = num_sides
  8.         
  9.     def roll(self):
  10.         """return a random number between 1 and die's sides"""
  11.         return randint(1,self.num_sides)
复制代码

这是die_visual.py
  1. from die import Die
  2. import pygal

  3. #create a D6
  4. die = Die()

  5. #roll die a few times and restore result in a list
  6. results = [die.roll() for i in range(6000)]        

  7. #analsis result
  8. frequencies = [results.count(value) for value in range(1,die.num_sides+1)]

  9. #visualize result
  10. hist = pygal.Bar()

  11. hist.title = "Results of rolling one D6 6000 times."
  12. hist.x_labels = [str(a) for a in range(1,die.num_sides+1)]
  13. hist.x_title = ["Result"]
  14. hist.y_title = "Frenquency of Result"

  15. hist.add('D6',frequencies)
  16. hist.render_to_file("die_visual.svg")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 17:03:02 | 显示全部楼层
hrp 发表于 2020-10-25 16:34
AttributeError: 'list' object has no attribute 'split':
从报错猜测你的 title 变量是一个列表,你对 ...

完全按照《Python编程》书的来,两个掷骰子的py文件都是最后一行有问题。pygal是可以用的,我在网上抄了简单的代码,可以用pygal生成一些简单的图表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 17:10:03 | 显示全部楼层    本楼为最佳答案   
张图南 发表于 2020-10-25 17:03
完全按照《Python编程》书的来,两个掷骰子的py文件都是最后一行有问题。pygal是可以用的,我在网上抄了 ...

die_visual.py 第 18 行,把方括号去掉试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 17:48:27 | 显示全部楼层
hrp 发表于 2020-10-25 17:10
die_visual.py 第 18 行,把方括号去掉试试

可以了,感谢大佬。若不嫌弃,可否留下支付宝账号,我请您吃顿早饭。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 18:00:11 | 显示全部楼层
张图南 发表于 2020-10-25 17:48
可以了,感谢大佬。若不嫌弃,可否留下支付宝账号,我请您吃顿早饭。

回答问题也就动动手而已,早饭就不用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表