Python绘制饼图时报错x must be 1D如何解决
错误原因
x must be 1D是matplotlib绘制饼图的pie()函数抛出的格式错误:饼图仅支持一维数组/列表形式的数值输入,你当前传入的是二维结构(嵌套列表、二维ndarray、多列DataFrame切片等均属于二维结构),不满足函数的入参要求。
解决步骤
- 先确认输入数据的维度:如果是numpy数组,执行
print(变量名.shape)查看形状,如果是列表直接打印确认是否有嵌套结构,形如[[10,20],[30,40]]的就是不符合要求的二维嵌套列表,[10,20,30,40]是符合要求的一维结构。 - 将二维结构转换为一维:
- 二维numpy数组可以用
flatten()方法压平:plot_x = 你的二维数组.flatten() - 嵌套列表可以用列表推导式展开:
plot_x = [item for sublist in 你的嵌套列表 for item in sublist] - 如果你是从DataFrame中取数,改为取单列数值即可:
plot_x = df['目标列名'].values
- 二维numpy数组可以用
- 调整后再调用绘图接口,参考最简可运行示例:
import matplotlib.pyplot as plt # 一维数值输入 x = [25, 35, 20, 20] labels = ['A类', 'B类', 'C类', 'D类'] plt.pie(x, labels=labels, autopct='%1.1f%%') plt.show()
内容的提问来源于stack exchange,提问作者Yash Salvi
相关产品推荐
相关产品推荐

