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列表list数组array用法实例解析
Oct 28 Python
详解Python中的array数组模块相关使用
Jul 05 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Python3的socket使用方法详解
Feb 18 Python
Python如何脚本过滤文件中的注释
May 27 Python
python中append函数用法讲解
Dec 11 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
jquery 插件学习(五)
2012/08/06 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
Python程序语言快速上手教程
2012/07/18 Python
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python实现注册、登录小程序功能
2018/09/21 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
python中if及if-else如何使用
2020/06/02 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
体操比赛口号
2014/06/10 职场文书
应急管理培训方案
2014/06/12 职场文书
防卫过当辩护词
2015/05/21 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python