我有以下代码,我正在绘制两个数据文件" 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()
然而,这会产生额外的情节(红色线条)!
如果我使用plt.plot(data[:,0], data[:,1])
代替plt.plot(data)
,则红线不再显示。
任何解释?此上下文中genfromtxt
和loadtxt
之间是否有任何区别?
答案 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
多得多。这些额外选项可用于排除页眉或页脚数据或替换缺失值。两个命令的返回类型是相同的。