鱼C论坛

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

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

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

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

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

x
报错代码如下:
Traceback (most recent call last):
  File "die_visual.py", line 22, in <module>
    hist.render_to_file('die_visual.svg')
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\public.py", line 114, in render_to_file
    f.write(self.render(is_unicode=True, **kwargs))
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\public.py", line 52, in render
    self.setup(**kwargs)
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\base.py", line 217, in setup
    self._draw()
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\graph.py", line 930, in _draw
    self._compute_margin()
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\graph\graph.py", line 706, in _compute_margin
    self._x_title = split_title(
  File "C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\pygal\util.py", line 329, in split_title
    title_lines = title.split("\n")
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
from random import randint

class Die():
    """a class of die"""
    
    def __init__(self,num_sides=6):
        """default 6 sides"""
        self.num_sides = num_sides
        
    def roll(self):
        """return a random number between 1 and die's sides"""
        return randint(1,self.num_sides)
这是die_visual.py
from die import Die
import pygal

#create a D6
die = Die()

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

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

#visualize result
hist = pygal.Bar()

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

hist.add('D6',frequencies)
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, 2025-1-18 04:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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