5

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

我不是要代码,一些输入应该让我走上正确的道路!

4

2 回答 2

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)

从“loadtxt”返回的对象“v”是一个 nxm 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()
于 2010-04-07T07:00:08.070 回答
0

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

于 2010-04-07T06:17:15.707 回答