2017-05-03 18 views
1

我使用glob绘制两个数据文件“data_1.txt”(二次函数)和“data_2.txt”(三次函数)与通配符*Python错误:绘制使用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之间是否有区别?

回答

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同样获得。在相应的文档中,您会发现genfromtxtloadtxt有更多的选项。这些额外的选项可能用于排除页眉或页脚数据或替换缺失值。两个命令的返回类型都是相同的。

+0

谢谢。除非我指定,否则'plot'不知道哪个数组将被绘制在哪个数组上,我想。 :) – hbaromega

相关问题