Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib读取文本文件中的列时的偏移量_Python_Matplotlib - Fatal编程技术网

Python 使用matplotlib读取文本文件中的列时的偏移量

Python 使用matplotlib读取文本文件中的列时的偏移量,python,matplotlib,Python,Matplotlib,我有一个包含数字数组的文本文件,我想从中绘制某些列与其他列的对比。我定义了一个column函数,这样我就可以为每一列指定一个名称,然后绘制它们,如下面的示例代码所示: def column(matrix,i): return [float(row.split()[i]) for row in matrix] Db = file('ResolutionEffects', 'r' ) HIcontour = column(Db,1) Db.seek(1) 但是,当我在终端中显示一列以检查

我有一个包含数字数组的文本文件,我想从中绘制某些列与其他列的对比。我定义了一个column函数,这样我就可以为每一列指定一个名称,然后绘制它们,如下面的示例代码所示:

def column(matrix,i):
    return [float(row.split()[i]) for row in matrix]

Db = file('ResolutionEffects', 'r' )
HIcontour = column(Db,1)
Db.seek(1)
但是,当我在终端中显示一列以检查Python是否确实读取了正确的列时,似乎在终端中返回的列的第一个值实际上是文本文件中下一列的第一个值。所有其他数字都来自正确的列。文本文件中没有空格或空行。据我所知,这个偏移量发生在第一列之后的每一列上。
如果有人能告诉我为什么会发生这种情况,或者找到一种更可靠的方法来读取文本文件中的列,我将不胜感激

事实上,我发现loadtext更加健壮。将文本文件转换为数据文件.dat后,我只需使用以下内容:

a=np.loadtxt('ResolutionEffects.dat', usecols=(0,1,11,12))
ax1.plot(a[:,0], a[:,1], 'dk', label='HI')
ax1.plot(a[:,2], a[:,3], 'dr', label='CO')

不再有奇怪的偏移或bug了:谢谢Ajean和jedwards

在最后一点上,我建议使用numpy或稍微不太通用的方法来读取文本文件中的列。还有一个模块,它可以处理任何合理的分隔符,不仅仅是逗号,而且numpy函数似乎更适合处理数字数据。