多条数据取第一条_matplotlib基于数据文件绘制其图像

先前,我们已经介绍过 matplotlib 第三方绘图库的基本操作方法。

这里,我们将介绍如何通过读取文件中的数据来绘制其图像的操作方法。

基本绘制方法

假设要绘制的数据存储在名为 sample.txt 的文件中,如下所示:

c077a80cd2d31338b1cbba1d1c42c3e0.png

sample.txt 存储数据内容

 1 import matplotlib.pyplot as plt 2  3 X, Y = [], [] 4 for line in open('sample.txt', 'r'): 5     values = [float(s) for s in line.split()] 6     X.append(values[0]) 7     Y.append(values[1]) 8  9 plt.plot(X, Y)10 plt.show()

上述代码:

#4 只读方式打开文件,以行为单位读取。

#5 分离每行数据并存储在列表中,其中 split 函数调用格式如下:

str.split(str="", num=string.count(str))

参数:

str -- 分隔符,默认为所有的空字符,包括空格、换行()、制表符()等。

num -- 分割次数,默认为 -1, 即分隔所有。

返回值:

返回分割后的字符串列表。

#6 存储分离得到的 X 坐标数据。

#7 存储分离得到的 Y 坐标数据。

ef4234875eae98ed7700b4bd90a74e80.png

sample.txt 文件数据绘制图像

上述操作是基于 Python 基本方法进行读取文件数据和绘制图像的。事实上,这样做无法处理一些可能出现的错误现象,从编程角度来看,是不严谨的。此外,matplotlib 还通常与 numpy 进行结合使用,进行处理用于绘制图像的数据源。

改良绘制方法

1 import numpy2 import matplotlib.pyplot as plot3 4 data = numpy.loadtxt('sample.txt')5 6 plot.plot(data[:,0], data[:,1])7 plot.show()

上述代码:

#4 numpy.loadtxt( )函数读取文件后,返回的是一个二维数组,类型上是矩阵。这就有利于我们能够方便地通过矩阵行、列的概念来分别获得 x、y 坐标的数值(#6 (data[:,0], data[:,1]))。

相较前面,上述代码更加简洁,而且,运用 numpy 后还能够快速处理大型数据文件,并且可以支持其它数据文件格式(诸如 CSV、matlab 等)。

此外,上述代码还可以支持类似如下情况中的多条曲线绘制任务:

比如,当文件中包含有 N 列数据时,即绘制 N-1 条曲线。第一列即为 x 坐标数值,第二列即为第一条曲线的 y 坐标数值;第三列即为第二条曲线的 y 坐标数值;以此类推……

示例:

假设此时数据文件中包含如下内容:

adf4610a695681e653052ea816e84ed3.png

sample.txt 数据文件存储内容

1 import numpy2 import matplotlib.pyplot as plot3 4 data = numpy.loadtxt('sample.txt')5 6 for column in data.T:7     plot.plot(data[:,0], column)8 9 plot.show()

上述代码:

#6 通过 data.T 矩阵转置(列→行)后读取的“行”即为原始矩阵的“列”。

#7 绘制多条曲线。

ef945bead03edff531a947d676fd1d6b.png

多条曲线绘制

小结:

本文介绍了如何用存储在文件中的数据直接绘制其图像的操作方法。在实际运用中,绝大多数绘制图像的数据源都是存储在某种格式的文件中。因此,学会上述图像绘制方法后,将有利于我们发挥其实际效用,特别是对于大型数据源。


欢迎大家关注交流,一起讨论学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值