python读取txt文件并画图
2017-12-17 22:31
507 查看
1,使用python读取txt文件
已知txt文件内容如下:
请以第一列为x轴,第二列为y轴画图
步骤如下:
1)使用readlines读取文件
2)建立两个空列表X,Y,将第一列的数字放入X,第二列的数字放入Y中
3)以X,Y为轴画图
实现如下:
步骤讲解:
1,以只读形式打开文件
2,读取每行文件,lines的结果是:
即已将文件放到一个list中,其中\t是前面的tab空格,\n是换行。现在要将这些\t,\n去掉,使用split函数。
但需要注意split()不可以用在list中,因为list没有split()函数,只有str才有,也就是说lines.split()会报错;但lines[i].split() for i in lines不会,因为lines[0]到lines[6]等每个元素都是列表中的一个str类型,所以每个元素可以用split()函数,如下:
float将str里面的字符改为数字
5因为是for循环,所以每次只有两个数字,即一行中的两个,于是总是将第一个放在X中,第二个放在Y中,最后输出X,Y如下:
可见这正是我们要的结果,同时画图如下:
2)优化代码
上面的代码有些繁琐(但却是很中规中矩的),可以采用方法以下优化
代码如下:
还可以进一步优化(列表解析法list conprehension)
这种方法的好处是,如果有很多列,可以直接在赋值号左边加值,如X,Y,Z,W =….
解释:以上调用了zip函数,zip函数的用法可以参考博文frydsh
3,使用numpy
代码如下:
结果和上面的图一样
综上,使用numpy是最方便的;当然刚开始的程序有点儿复杂,但对于理解python画图的实现过程是有帮助的。
另外,numpy.loadtxt还可以读取.dat等文件,如读取CMB上的功率谱
已知txt文件内容如下:
0 0 1 1 2 4 3 9 4 16 5 25 6 36
请以第一列为x轴,第二列为y轴画图
步骤如下:
1)使用readlines读取文件
2)建立两个空列表X,Y,将第一列的数字放入X,第二列的数字放入Y中
3)以X,Y为轴画图
实现如下:
import matplotlib.pyplot as plt filename = 'test1.txt' X,Y = [],[] with open(filename, 'r') as f:#1 lines = f.readlines()#2 for line in lines:#3 value = [float(s) for s in line.split()]#4 X.append(value[0])#5 Y.append(value[1]) print(X) print(Y) plt.plot(X, Y) plt.show()
步骤讲解:
1,以只读形式打开文件
2,读取每行文件,lines的结果是:
['\t0\t0\n', '\t1\t1\n', '\t2\t4\n', '\t3\t9\n', '\t4\t16\n', '\t5\t25\n', '\t6\t36']
即已将文件放到一个list中,其中\t是前面的tab空格,\n是换行。现在要将这些\t,\n去掉,使用split函数。
但需要注意split()不可以用在list中,因为list没有split()函数,只有str才有,也就是说lines.split()会报错;但lines[i].split() for i in lines不会,因为lines[0]到lines[6]等每个元素都是列表中的一个str类型,所以每个元素可以用split()函数,如下:
>>> type(lines[0]) <class 'str'> >>> type(lines) <class 'list'> >>> lines[0].split() ['0', '0'] >>> lines.split() Traceback (most recent call last): File "<pyshell#82>", line 1, in <module> lines.split() AttributeError: 'list' object has no attribute 'split'
float将str里面的字符改为数字
5因为是for循环,所以每次只有两个数字,即一行中的两个,于是总是将第一个放在X中,第二个放在Y中,最后输出X,Y如下:
[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0] [0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0]
可见这正是我们要的结果,同时画图如下:
2)优化代码
上面的代码有些繁琐(但却是很中规中矩的),可以采用方法以下优化
代码如下:
X, Y = [], [] for line in open('my_data.txt', 'r'): values = [float(s) for s in line.split()] X.append(values[0]) Y.append(values[1]) plt.plot(X, Y) plt.show()
还可以进一步优化(列表解析法list conprehension)
import matplotlib.pyplot as plt with open('test1.txt', 'r') as f: X, Y = zip(*[[float(s) for s in line.split()] for line in f]) plt.plot(X, Y) plt.show()
这种方法的好处是,如果有很多列,可以直接在赋值号左边加值,如X,Y,Z,W =….
解释:以上调用了zip函数,zip函数的用法可以参考博文frydsh
3,使用numpy
代码如下:
import matplotlib.pyplot as plt import numpy as np data = np.loadtxt('test1.txt') plt.plot(data[:,0],data[:,1]) plt.show()
结果和上面的图一样
综上,使用numpy是最方便的;当然刚开始的程序有点儿复杂,但对于理解python画图的实现过程是有帮助的。
另外,numpy.loadtxt还可以读取.dat等文件,如读取CMB上的功率谱
相关文章推荐
- Python实现读取txt文件并画三维图简单代码示例
- Python 读取mat txt 文件
- P-1.7 [有例题]Python读取、写入.txt文件
- Python瞎折腾[1]-读取txt文件
- Python练习—画图软件生成的图像转成txt文件(只有0和1)
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- 用python读取、写入txt文件
- python读取.txt文件数据和将数据写入文件.txt
- Python读取中文txt文件错误:UnicodeEncodeError: 'gbk' codec can't encode character
- python 读取dicom文件,生成info.txt和raw文件
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- Python读取txt文件,并画三维图
- 对python .txt文件读取及数据处理方法总结
- Python读取文件目录,并保存到txt文件
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- Python读取txt文件数据的方法(用于接口自动化参数化数据)
- python .txt文件读取及数据处理总结
- 使用python读取.txt文件并保存到Excel中
- python读取txt文件中的数组
- python读取TXT文件并逐行写入另外一个TXT文件