0

我正在尝试根据如何使用输入 *.txt 文件绘制一个非常简单的条形图(Python、Matplotlib)中提供的示例构建一个垂直条形图?pylab_examples 示例代码: 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()函数是否定义正确。在尝试复制前面提到的两个示例时,我可能忽略了其他问题。

4

2 回答 2

2

x, y = line.split() 返回一个字符串元组。我相信您需要将它们转换为整数和浮点数。您还需要 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),它使条形图非常难看。

于 2013-09-24T18:49:59.267 回答
1

也许你想做类似的事情

for line in data.split("\n"):
    x, y = line.split()
    values.append(int(x))
    counts.append(float(y))
于 2013-09-24T18:41:40.070 回答