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 相关文章推荐
Python简单进程锁代码实例
Apr 27 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
简单谈谈python基本数据类型
Sep 26 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
解决python 读取 log日志的编码问题
Dec 24 Python
python轮询机制控制led实例
May 03 Python
Python脚本打包成可执行文件过程解析
Oct 20 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
python制作花瓣网美女图片爬虫
2015/10/28 Python
python虚拟环境迁移方法
2019/01/03 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
override和overload的区别
2016/03/09 面试题
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技
js判断两个数组相等的5种方法
2022/05/06 Javascript
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL