Matplotlib中的直方图与输入文件

时间:2010-04-07 06:05:18

标签: python matplotlib histogram

我希望在包含原始数据(.txt)的输入文件中在Matplotlib中创建直方图。我在引用输入文件时遇到问题。我想它应该是一个相当小的程序。任何Matplotlib大师,任何帮助?

我不是要求代码,一些输入应该让我正确的方式!

2 个答案:

答案 0 :(得分:9)

我建议使用实际上在NumPy库中的“ loadtxt ”。 Matplotlib(csv2rec)中有相关的函数,但Matplotlib实际上是在loadtxt上标准化。

以下是它的工作原理:

from matplotlib import pyplot as PLT

with open('name_of_your_file.csv') as f:
  v = NP.loadtxt(f, delimiter=",", dtype='float', comments="#", skiprows=1, usecols=None)

'v',从'loadtxt'返回的对象是一个n x m NumPy数组。

'loadtxt'接受文件或文件描述符。上面的实例具有大部分方法签名。 'skiprows'是一个整数,指定从您想要跳过的顶部开始计数的行数;通常将其设置为“1”以跳过标题行; 'usecols'从'0'开始,是一个列出你想要包含的列的列表('None'是默认值,意思是'include all')。其他参数按预期工作。

从该数据绘制直方图:

from matplotlib import pyplot as PLT

v_hist = NP.ravel(v)   # 'flatten' v
fig = PLT.figure()
ax1 = fig.add_subplot(111)

n, bins, patches = ax1.hist(v_hist, bins=50, normed=1, facecolor='green')
PLT.show()

答案 1 :(得分:0)

你无法直接告诉matplotlib从输入文件中创建直方图 - 你需要自己打开文件并从中获取数据。你如何做到这一点取决于文件的格式 - 如果它只是每行上有一个数字的文件,你可以遍历每一行,strip()空格和换行符,并使用float()将其转换为数字。