python画二维折线图_Python绘制二维曲线的日常应用详解

使用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')

我的运动数据记录电子表格格式如下:

20191204103252.jpg

程序运行,画出的曲线如下:

20191204103306.jpg

基本差不多了,后面需要做的只有细节上的修正了。

以上这篇Python绘制二维曲线的日常应用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值