有一个.txt文本数据如下:
Data
%%%1351
x y
1E-02 2.1E-02
2.5E-01 3.0E-1
3.55E+00 4.2E+00
…(后面的数据省略)
现在要绘制有关x-y的数据图像。
1. 加载指定行数据
def loadData(flieName):
'''
从.txt文件中读取数据
可选择读取所有数据也可选择读取选定行数据
'''
lnum=0
x=[] #创建空表存放x数据
y=[] #创建空表存放y数据
with open(flieName, 'r') as f: #以只读形式打开某.txt文件
for line in f:
lnum += 1
if(lnum>=4): #从第四行开始添加数据
line=line.strip('\n') #去掉换行符
line=line.split('\t') #分割掉两列数据之间的制表符
x.append(line[0])
y.append(line[1])
#NOTE:此时所得到的x列表中的数据类型是str类型,因此需要进行转换,转换为float类型
x=np.array(x)
x=x.astype(np.float).tolist()
y=np.array(y)
y=y.astype(np.float).tolist()
return (x,y)
2. 绘图
def plotdata(x,y):
fig = plt.figure(figsize=(10, 10)) # 创建绘图窗口,并设置窗口大小
ax = fig.add_subplot(1,1,1)
ax.plot(x, y, 'red', label='unknown') # 画x-y的值,颜色红
ax.legend(loc='upper left') # 绘制图例,plot()中的label值
ax.set_xlabel('x-axis') # 设置X轴名称
ax.set_ylabel('y-axis') # 设置Y轴名称
plt.show() # 显示绘制的图
还有一种使用pylab库绘制图的方法如下,参考该博客,其效果见该博客:参考博客
## 绘制该文件中的数据
## 需要引入pylab库,里面用到的函数和MATLAB里的非常类似
def plotData(x, y):
length = len(y)
pylab.figure(1)
pylab.plot(x, y, 'rx')
pylab.xlabel('x')
pylab.ylabel('y')
pylab.show()#让绘制的图像在屏幕上显示出来
友情提醒
在加载数据之后,如若要对数据进行其他操作,请一定要确保数据格式已经转换为float或int等这些类型,否则后续对数据求最值等操作都会出现错误。因此在返回x y数组之后,最好确认一下数组中各个元素的类型print(type(x[0]))