初次尝试用matplotlib来绘制csv文件(线图)

初次尝试用matplotlib来绘制csv文件

 

前言

这是我的第一篇博客,作为非专业小白,就当是给自己做的一次笔记了。

之前没有接触过这方面的任务,所以就带着探索、学习的心态来绘制了。

 

参考资料

1、首先是matplotlib的官方guidehttps://matplotlib.org/stable/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py,这里有最清晰的plot概念,很适合新手小白。

2、其次是一个youtube视频,题目就是要解决的任务。https://www.youtube.com/watch?v=MNLmQJtCCZY

3、视频看到一半觉得差不多懂了,就查询numpy的loadtxt函数,也是本任务的核心。https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html?highlight=loadtxt#numpy.loadtxt

4、numpy数据类型(后面会讲到)https://blog.csdn.net/Zhili_wang/article/details/81140282?ops_request_misc=&request_id=&biz_id=102&utm_term=dtype&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-.nonecase&spm=1018.2226.3001.4187

 

任务处理

读取数据

如图所示,csv文件前几行是一些描述信息,可以不用处理。必要的是第一列以及后五列的数字(以第一列为x轴数据,后几列为y轴)。

那么就需要利用到numpy.loadtxt这个函数的一些性质了。但是在看官方给的事例时,发现有些dtype类型不懂:(见下图倒数第一行)

于是在csdn上查询了什么dtype的各个符号代表啥意思:

其实对应起来都很好理解这些数据类型。

针对本次任务,loadtxt函数中有一些参数是我们需要注意的:

delimiter:就是区分你数据的符号,相当于python中的.split( )。一般来说我们会使用delimiter = ',' , 即字符','被用作分割数据。

skiprows:顾名思义,跳过前几个行。在我的事例中,我需要跳过前5行,因此输入参数5(为啥是5不是4,是我自己试出来的……)。

usecols:挑选有用的列。那么在本例中应该写成(0,6,7,8,9,10)

unpack:这个是看油管的讲解的。将unpack设置为True,可以使返回的参数成一个array,而不是python最常用的数据类型列表。(可能我理解不对,如有错欢迎指出)

那么对应的代码可以写成:

import matplotlib.pyplot as plt
import numpy as np

time, d1, d2, d3, d4, d5 = np.loadtxt('20210120_A1.csv',#这是文件名
                                      unpack=True,
                                      delimiter=',',
                                      skiprows=5,
                                      usecols=(0,6,7,8,9,10))
#检测一下自己有没有写错
print(time)
print(d1)

 

画图

由于我们想要的数据已经读取出来了,下一步就是要将它们画出来。

我这里因为只要画一个图,因此采用最简单的方式。

#官方说法
fig = plt.figure()  # an empty figure with no Axes
fig, ax = plt.subplots()  # a figure with a single Axes

于是接下来的操作也很简单,如下代码:

# Note that even in the OO-style, we use `.pyplot.figure` to create the figure.
fig, ax = plt.subplots()  # Create a figure and an axes.
ax.plot(time, d1, label='spot1')  # Plot some data on the axes.
ax.plot(time, d2, label='spot2')  # Plot more data on the axes...
ax.plot(time, d3, label='spot3')  # ... and some more.
ax.set_xlabel('time')  # Add an x-label to the axes.
ax.set_ylabel('displacement')  # Add a y-label to the axes.
ax.set_title("Dynamic Dis")  # Add a title to the axes.
ax.legend()  # Add a legend.

plt.show()#show the picture

对于我的数据,有以下结果:

由于数据太过接近,只显示出了绿色的spot3数据,但是有不明显的黄色及蓝色数据点。

 

结语

由于我没有更高阶的需求,像是改变图片的大小、图片的像素、保存、数据刻度等等这些功能都没有展示出来。

希望我能够帮助到你,感觉记笔记也是个很好的归纳过程,也推荐大家尝试尝试:>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值