Python error : Extra plot while plotting multiple data files using glob

Python error : Extra plot while plotting multiple data files using glob

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

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()

但是,这会生成一个额外的图(红色线)!

如果我使用 plt.plot(data[:,0], data[:,1]) 而不是 plt.plot(data),红线就不会再出现了。

有什么解释吗?在这种情况下,genfromtxtloadtxt 之间也有区别吗?

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

为了使用 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 has a lot more options than loadtxt。这些额外的选项可能对排除页眉或页脚数据或替换缺失值很有用。 return 两个命令的类型相同。