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嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
python解析含有重复key的json方法
Jan 22 Python
Python3爬楼梯算法示例
Mar 04 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
Python  Django 母版和继承解析
Aug 09 Python
numpy:找到指定元素的索引示例
Nov 26 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
Python的pygame安装教程详解
Feb 10 Python
python 实现IP子网计算
Feb 18 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日期处理函数 整型日期格式
2011/01/12 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
json跟xml的对比分析
2008/06/10 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Python实现的购物车功能示例
2018/02/11 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python学习小技巧总结
2018/06/10 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
民事诉讼代理授权委托书范本
2014/10/08 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP