You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用列表推导式在Matplotlib中绘制饼图时float不可迭代报错如何解决

问题定位

  • 执行完前面的for data in datas循环后,data变量已经指向datas列表的最后一个元素,data["perc"]是单浮点值、data["fuel"]是单字符串,二者都不是可迭代对象,所以你写的列表推导式尝试遍历这两个值的时候会抛出TypeError: 'float' object is not iterable错误
  • 后续调用plt.pie时你传入了字符串"y"而非数值变量y,即使列表生成正确也会触发报错
  • 列表推导式的逻辑错误:你需要遍历整个datas列表提取所有条目的perc和fuel字段,而非遍历单个条目对应的字段值

修正后代码

import requests
import pprint
import matplotlib.pyplot as plt
import numpy as np


filename = "https://api.carbonintensity.org.uk/regional/england"
r = requests.get(filename)
print("Status Code:", r.status_code)

# 存储API返回结果
responce_dict = r.json()

# 提取发电结构数据
datas = responce_dict["data"][0]["data"][0]["generationmix"]

# 打印原始数据
pprint.pprint(datas)

# 正确遍历整个datas列表提取字段
y = np.array([item["perc"] for item in datas])
mylabels = [item["fuel"] for item in datas]

# 传入正确变量绘制饼图,autopct参数用于显示扇形占比
plt.pie(y, labels = mylabels, autopct='%1.1f%%')
plt.show()

内容的提问来源于stack exchange,提问作者code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:48:05