Python绘制二维曲线的日常应用

本文介绍如何使用Python的matplotlib和numpy库来读取Excel文件中的个人运动数据,并绘制包括年度累计距离、每日运动距离及完成百分比在内的趋势图表。

使用Python绘制出类似Excel或者MATLAB的曲线还是比较容易就能够实现的,需要用到的额外库有两个,numpy和matplotlib。使用这两个模块实现的曲线绘制其实在一定程度上更像是MATLAB的plot功能,不过今天看了一下matplotlib网站上的信息,现在的功能更为强劲了,而且已经支持三维图像的绘制。

模块库的安装非常简单,我使用的Mac,在Mac上用pip进行了两个模块库的安装都十分顺畅。相信其他平台基本上也都这样,如果能够联网,这种安装方式是十分推荐的,确实是简单。

我用Python读取我自己日常运动的数据,数据以Numbers的方式进行统计,导出成Excel文件。为了能够读取Excel文件,我又安装了xlrd模块库。

从matplotlib的网站上抄了一小段代码简单做了一下修改,加入了数据读取以及简单的计算,代码如下:

  1 #!/usr/bin/python

  2 

  3 import numpy as np

  4 import matplotlib.pyplot as plt

  5 from xlrd import open_workbook

  6 

  7 def SportLine(excel_file):

  8         days_year    = []

  9         target_km    = []

 10         records      = []

 11         sum_records  = []

 12         pct_records  = []

 13         target_pct   = []

 14 

 15         fig,axs = plt.subplots(3)

 16 

 17         for i in range(365):

 18                 days_year.append(i)

 19 

 20         for day in days_year:

 21                 target_km.append(float(day)/365.0 * 1000.0)

 22 

 23         # read record data

 24         book  = open_workbook(excel_file)

 25         sheet = book.sheet_by_name('record')

 26         rows_num = sheet.nrows

 27         cols_num = sheet.ncols

 28         for row_num in range(3,368):

 29                 try:

 30                         records.append(float(sheet.cell(row_num,1).value))

 31                 except:

 32                         records.append(0.0)

 33 

 34         # calculate sum of records

 35         sum_record = 0.0

 36         for each_record in records:

 37                 sum_record += each_record

 38                 sum_records.append(sum_record)

 39 

 40         # calculate pct of all

 41         for each_sum in sum_records:

 42                 pct_records.append(each_sum / 1000.0)

 43 

 44         # calculate target pct

 45         for day in range(1,366):

 46                 target_pct.append(float(day)/365.0)

 47 

 48         # plot target and sum trend

 49         ax = axs[0]

 50         ax.plot(days_year,sum_records)

 51         ax.plot(days_year,target_km)

 52         ax.set_title('distance-year-km')

 53         ax.grid(True)

 54 

 55         # plot record

 56         ax = axs[1]

 57         ax.plot(days_year,records)

 58         ax.set_title('distance-day-km')

 59         ax.grid(True)

 60 

 61         # plot percentage

 62         ax = axs[2]

 63         ax.plot(days_year,pct_records)

 64         ax.plot(days_year,target_pct)

 65         ax.set_title('pct-100%')

 66         ax.grid(True)

 67         plt.show()

 68 

 69 SportLine('records.xlsx')

 70 


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



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



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


### 如何使用 Python 和 Matplotlib 绘制二维曲线 Matplotlib 是一个强大的 Python 数据可视化库,可以用来绘制各种类型的图表,其中包括二维曲线。以下是通过 Matplotlib 实现二维曲线绘图的具体方法。 #### 导入必要的模块 为了实现绘图功能,首先需要导入 `matplotlib.pyplot` 模块以及用于数值计算的 `numpy` 库[^1]: ```python import numpy as np import matplotlib.pyplot as plt ``` #### 定义数据集 定义一组 x 值及其对应的 y 值来表示要绘制的函数关系。例如,下面是一个简单的正弦波的例子[^3]: ```python x = np.linspace(0, 2 * np.pi, 500) # 创建从 0 到 2π 的均匀分布点 y_sin = np.sin(x) # 计算对应于 x 的 sin 函数值 ``` #### 设置图形属性并绘制曲线 设置线条的颜色、线宽以及其他样式选项,并调用 `plot()` 方法完成实际的绘图过程: ```python plt.figure(figsize=(8, 6)) # 可选:设定图像大小 plt.plot(x, y_sin, 'b-', lw=2, label='Sine Wave') # 使用蓝色实线 ('b-'), 线条宽度 (lw=2), 添加标签 ``` #### 添加额外的信息到图表上 为了让图表更加清晰易懂,还可以加入标题、坐标轴名称和图例等辅助信息: ```python plt.title('Simple Sine Curve', fontsize=16) # 图表标题 plt.xlabel('Angle [radians]', fontsize=14) # X 轴描述文字 plt.ylabel('Amplitude', fontsize=14) # Y 轴描述文字 plt.legend(loc='upper right') # 显示图例位置位于右上方 plt.grid(True) # 开启网格显示以便观察更精确的数据变化趋势 ``` #### 展示最终结果 最后一步就是利用 `show()` 函数把整个配置好的图片呈现出来给用户查看: ```python plt.show() ``` 以上即为完整的基于 Python 中 Matplotlib 工具包制作标准二维平面曲线的过程说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值