2013-09-24 3 views
0

Я пытаюсь построить вертикальную гистограмму на основе примеров, представленных в How to plot a very simple bar chart (Python, Matplotlib) using input *.txt file? и pylab_examples example code: barchart_demo.py.Создание диаграммы столбцов матрицы из двух столбцов данных

# a bar chart 
import numpy as np 
import matplotlib.pyplot as plt 

data = """100 0.0 
     5 500.25 
     2 10.0 
     4 5.55 
     3 950.0 
     3 300.25""" 

counts = [] 
values = [] 

for line in data.split("\n"): 
    x, y = line.split() 
    values = x 
    counts = y 

plt.bar(counts, values) 

plt.show() 

тока я получаю следующее сообщение об ошибке: AssertionError: incompatible sizes: argument 'height' must be length 15 or scalar. Я не уверен, правильно ли определена функция plt.bar(). Могут быть другие проблемы, которые я упустил, пытаясь воспроизвести два ранее упомянутых примера.

ответ

2

х, у = line.split() возвращает кортеж строк. Я считаю, что вам нужно преобразовать их в ints и плавать. Вам также нужны значения.append (x) и values.append (y).

import numpy as np 
import matplotlib.pyplot as plt 

data = """100 0.0 
     5 500.25 
     2 10.0 
     4 5.55 
     3 950.0 
     3 300.25""" 

counts = [] 
values = [] 

for line in data.split("\n"): 
    x, y = line.split() 
    values.append(int(x)) 
    counts.append(float(y)) 

plt.bar(counts, values) 

plt.show() 

Учитывая значение 100 в первой строке (по сравнению с < = 5 для остальные), это делает для довольно уродливых гистограмм, хотя.

1

Может быть, вы хотите сделать что-то вроде

for line in data.split("\n"): 
    x, y = line.split() 
    values.append(int(x)) 
    counts.append(float(y)) 
Смежные вопросы