鱼C论坛

 找回密码
 立即注册
查看: 1248|回复: 2

[已解决]绘制图表报错

[复制链接]
发表于 2020-8-16 13:37:29 | 显示全部楼层 |阅读模式

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

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

x
错误:
  1. Traceback (most recent call last):
  2.   File "D:\my.code\CityMorning Tools\TurtleTomato\TurtleTomato.py", line 157, in <module>
  3.     plt.pie(sizes,   autopct='%1.1f%%',
  4.   File "C:\Users\Charlie\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\pyplot.py", line 2810, in pie
  5.     return gca().pie(
  6.   File "C:\Users\Charlie\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\__init__.py", line 1431, in inner
  7.     return func(ax, *map(sanitize_sequence, args), **kwargs)
  8.   File "C:\Users\Charlie\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\axes\_axes.py", line 2995, in pie
  9.     x = np.asarray(x, np.float32)
  10.   File "C:\Users\Charlie\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\core\_asarray.py", line 83, in asarray
  11.     return array(a, dtype, copy=False, order=order)
  12. ValueError: could not convert string to float: '1,1,2'
复制代码


代码:
  1. import matplotlib.pyplot as plt
  2.         sizes = [s]
  3.         plt.pie(sizes,   autopct='%1.1f%%',
  4.         shadow=True, startangle=90)
  5.         plt.axis('equal')
  6.         plt.show()
复制代码

s = '1,1,2'
最佳答案
2020-8-16 14:02:52

改成这样,你字符串不能直接拿去用,切割逗号然后转为 int 即可

  1. import matplotlib.pyplot as plt
  2. s = '1,1,2'
  3. sizes = [ int(i) for i in s.split(',')]
  4. plt.pie(sizes,   autopct='%1.1f%%',
  5. shadow=True, startangle=90)
  6. plt.axis('equal')
  7. plt.show()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-16 14:02:52 | 显示全部楼层    本楼为最佳答案   

改成这样,你字符串不能直接拿去用,切割逗号然后转为 int 即可

  1. import matplotlib.pyplot as plt
  2. s = '1,1,2'
  3. sizes = [ int(i) for i in s.split(',')]
  4. plt.pie(sizes,   autopct='%1.1f%%',
  5. shadow=True, startangle=90)
  6. plt.axis('equal')
  7. plt.show()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 14:38:10 | 显示全部楼层
如果一定要用变量s,直接把列表赋值给s就可以了。
  1. import matplotlib.pyplot as plt
  2. sizes = s
  3. plt.pie(sizes,   autopct='%1.1f%%',
  4. shadow=True, startangle=90)
  5. plt.axis('equal')
  6. plt.show()

  7. s=[1,1,2]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-25 19:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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