使用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
asnp 4
import
matplotlib.pyplot
asplt 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
fori
inrange
(365):
18
19
20 for
day
indays_year:
21 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 forrow_num
inrange(3
,368):
29 try:
30 float
(sheet.cell(row_num,
1).value))
31 except:
32 0.0)
33
34 # calculate sum of records
35 sum_record =
0.0
36 for
each_record
inrecords:
37 sum_record += each_record
38 39
40 # calculate pct of all
41 foreach_sum
insum_records:
42 1000.0)
43
44 # calculate target pct
45 forday
inrange(1
,366):
46 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 繪製二維曲面 曲面繪製二維陣列
我試著從表面的例子著手 from mpl toolkits.mplot3d import axes3d from matplotlib import cm from matplotlib.ticker import linearlocator,formatstrformatter import ma...
一維 二維正態分佈概率密度曲線的繪製
在matlab中使用 y normpdf x,mu,sigma 函式求一維正態分佈的概率密度,其中x為隨機向量,mu為期望,sigma為標準差 matlab 如下 x 8 0.1 8 y1 normpdf x,0,1 期望為0,標準差為1的正態分佈 y2 normpdf x,1,2 期望為1,標準差...
Python中二維高斯函式的繪製
高斯核函式g x,y,二維高斯函式 的公式可以寫成 python 實現 import numpy as np import matplotlib.pyplot as plt from mpl toolkits.mplot3d import axes3d x,y np.mgrid 5 5 200j,5...