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获得图片base64编码示例
Jan 16 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
python中kmeans聚类实现代码
Feb 23 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
【python】matplotlib动态显示详解
Apr 11 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 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/01 无线电
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
jquery索引在使用中的一些困惑
2013/10/24 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
Python实现简单http服务器
2018/04/12 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
美德少年事迹材料
2014/01/23 职场文书
小学毕业感言500字
2014/02/28 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
心得体会格式及范文
2016/01/25 职场文书
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
python 闭包函数详细介绍
2022/04/19 Python
如何Tomcat中使用ipv6地址
2022/05/06 Servers
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server