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每次处理固定个数的字符的方法总结
Jan 29 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
在python中bool函数的取值方法
Nov 01 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python实现最短路径的实例方法
Jul 19 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
python中os.path.join()函数实例用法
May 26 Python
Python中itertools库的四个函数介绍
Apr 06 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输出缓存ob系列函数详解
2014/03/11 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
YII框架关联查询操作示例
2019/04/29 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
js数组Array sort方法使用深入分析
2013/02/21 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
跟老齐学Python之数据类型总结
2014/09/24 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
详解python播放音频的三种方法
2019/09/23 Python
Python批量启动多线程代码实例
2020/02/18 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python ATM功能实现代码实例
2020/03/19 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
售票员岗位职责
2015/02/15 职场文书
可可西里观后感
2015/06/08 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电