从两列数据生成matlibplot条形图

时间:2013-09-24 18:36:20

标签: python matplotlib

我正在尝试根据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 个答案:

答案 0 :(得分:2)

x,y = line.split()返回一个字符串元组。我相信你需要将它们转换成int和floats。您还需要values.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 :(得分:1)

也许你想做类似

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