Python绘制二维曲线的日常应用详解


Posted in Python onDecember 04, 2019

使用Python绘制出类似Excel或者MATLAB的曲线还是比较容易就能够实现的,需要用到的额外库有两个,numpy和matplotlib。使用这两个模块实现的曲线绘制其实在一定程度上更像是MATLAB的plot功能,不过今天看了一下matplotlib网站上的信息,现在的功能更为强劲了,而且已经支持三维图像的绘制。

模块库的安装非常简单,我使用的Mac,在Mac上用pip进行了两个模块库的安装都十分顺畅。相信其他平台基本上也都这样,如果能够联网,这种安装方式是十分推荐的,确实是简单。

我用Python读取我自己日常运动的数据,数据以Numbers的方式进行统计,导出成Excel文件。为了能够读取Excel文件,我又安装了xlrd模块库。

从matplotlib的网站上抄了一小段代码简单做了一下修改,加入了数据读取以及简单的计算,代码如下:

#!/usr/bin/python



 import numpy as np

 import matplotlib.pyplot as plt

 from xlrd import open_workbook



 def SportLine(excel_file):

     days_year  = []

     target_km  = []

     records   = []

     sum_records = []

     pct_records = []

     target_pct  = []



     fig,axs = plt.subplots(3)



     for i in range(365):

         days_year.append(i)



     for day in days_year:

         target_km.append(float(day)/365.0 * 1000.0)



     # read record data

     book = open_workbook(excel_file)

     sheet = book.sheet_by_name('record')

     rows_num = sheet.nrows

     cols_num = sheet.ncols

     for row_num in range(3,368):

         try:

             records.append(float(sheet.cell(row_num,1).value))

         except:

             records.append(0.0)



     # calculate sum of records

     sum_record = 0.0

     for each_record in records:

         sum_record += each_record

         sum_records.append(sum_record)



     # calculate pct of all

     for each_sum in sum_records:

         pct_records.append(each_sum / 1000.0)



     # calculate target pct

     for day in range(1,366):

         target_pct.append(float(day)/365.0)



     # plot target and sum trend

     ax = axs[0]

     ax.plot(days_year,sum_records)

     ax.plot(days_year,target_km)

     ax.set_title('distance-year-km')

     ax.grid(True)



     # plot record

     ax = axs[1]

     ax.plot(days_year,records)

     ax.set_title('distance-day-km')

     ax.grid(True)



     # plot percentage

     ax = axs[2]

     ax.plot(days_year,pct_records)

     ax.plot(days_year,target_pct)

     ax.set_title('pct-100%')

     ax.grid(True)

     plt.show()



 SportLine('records.xlsx')

我的运动数据记录电子表格格式如下:

Python绘制二维曲线的日常应用详解

程序运行,画出的曲线如下:

Python绘制二维曲线的日常应用详解

基本差不多了,后面需要做的只有细节上的修正了。

以上这篇Python绘制二维曲线的日常应用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pygame播放音乐的方法
May 19 Python
Python实现批量修改文件名实例
Jul 08 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
python+django快速实现文件上传
Oct 24 Python
python中模块的__all__属性详解
Oct 26 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
python 字典item与iteritems的区别详解
Apr 25 Python
python pillow库的基础使用教程
Jan 13 Python
使用python远程操作linux过程解析
Dec 04 #Python
基于Python检测动态物体颜色过程解析
Dec 04 #Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 #Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 #Python
python 画函数曲线示例
Dec 04 #Python
python二元表达式用法
Dec 04 #Python
python numpy 反转 reverse示例
Dec 04 #Python
You might like
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
Python多进程编程技术实例分析
2014/09/16 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python实现Virginia无密钥解密
2019/03/20 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
正规借条模板
2015/05/26 职场文书
世界名著读书笔记
2015/06/25 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android