我有一个包含1列,值为0或1的CSV文件,我试图将值的数量绘制为饼图。
我试过了:
fileName = sys.argv[1]
col1 = sys.argv[2]
file = pd.read_csv(fileName)
data = np.array(file)[:,col1]
labels = 'True', 'False'
sizes = data
colors = ['red', 'blue']
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')
plt.show()
但它错了。如何从CSV列显示2切片饼图?这些值无序。我用条形图做了类似的事情,它自动完全解决了这个问题。
回溯:
Traceback (most recent call last):
File "pie.py", line 18, in <module>
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
File "~\matplotlib\pyplot.py", line 3137, in pie
frame=frame, data=data)
File "~\matplotlib\__init__.py", line 1811, in inner
return func(ax, *args, **kwargs)
File "~\matplotlib\axes\_axes.py", line 2559, in pie
raise ValueError("'label' must be of length 'x'")
ValueError: 'label' must be of length 'x'
答案 0 :(得分:0)
问题是数据量(sizes
)大于或小于2(labels
的数量)。
验证数据和标签具有相同数量的数据:
labels = 'True', 'False'
sizes = data
colors = ['red', 'blue']
assert len(sizes) == len(labels)
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
如果断言失败,则必须输入更多/更少的标签和颜色,具体取决于sizes
中的数据量。