2016-02-21 3 views
0

У меня есть файл CSV с 1 столбцом со значениями 0 или 1, я пытаюсь построить число значений в виде круговой диаграммы.Matplotlib Pyplot Pie Chart From CSV File

Я попытался:

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? Значения не соответствуют порядку. Я сделал что-то подобное с гистограммой, и он автоматически просто вычислил все это.

Traceback:

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

Что такое трассировка? – zondo

+0

@zondo обновленный вопрос с ним – Crizly

ответ

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.

+0

Можете ли вы добавить фиксированный код и ответ. –

+0

написать код также –