Python错误:使用glob绘制多个数据文件时的额外绘图

时间:2017-05-03 11:51:59

标签: python matplotlib plot glob

我有以下代码,我正在绘制两个数据文件" data_1.txt" (二次函数)和" data_2.txt" (三次函数)使用带有通配符*的glob。

import numpy as np
import matplotlib.pyplot as plt
import glob

#fig,ax = plt.subplots()

path = "data_*.txt"
for datafile in glob.glob(path):

    #data = np.loadtxt(datafile)
    data = np.genfromtxt(datafile)
    #print(data)
    #ax.plot(data)
    plt.plot(data)
    #plt.plot(data[:,0], data[:,1])  # This line works

plt.show()

然而,这会产生额外的情节(红色线条)!

enter image description here

如果我使用plt.plot(data[:,0], data[:,1])代替plt.plot(data),则红线不再显示。

任何解释?此上下文中genfromtxtloadtxt之间是否有任何区别?

1 个答案:

答案 0 :(得分:0)

你看到的红线实际上是一条蓝线和一条红线。这些是根据其索引绘制的数据文件的第一列。

为了使用matplotlib的plot函数生成线图,应指定x和y坐标数组。一种选择确实是使用

data = np.genfromtxt(datafile)
plt.plot(data[:,0],data[:,1])

另一种选择是解压缩数据。所以对于两列数据文件,

x,y = np.genfromtxt(datafile, unpack=True)
plt.plot(x,y)

np.loadtxt同样可以使用这两个选项。在相应的文档中,您会发现genfromtxt的选项比loadtxt多得多。这些额外选项可用于排除页眉或页脚数据或替换缺失值。两个命令的返回类型是相同的。