有一个.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=0x=[] #创建空表存放x数据y=[] #创建空表存放y数据with open(flieName, 'r') as f: #以只读形式打开某.txt文件for line in f:lnum += 1if(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]))
参考资料:
python 读取、写入txt文本内容
matplotlib详解