python科學計算和可視化學習報告

一丶numpy和matplotlib學習筆記

1.

《python科學計算和可視化學習報告》

NumPy是Python語言的一個擴充程序庫。支持高級大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。Numpy內部解除了Python的PIL(全局解釋器鎖),運算效率極好,是大量機器學習框架的基礎庫!

接下來讓我們看看Numpy的簡單應用

Numpy簡單創建數組

import numpy as np # 創建簡單的列表 a = [1, 2, 3, 4] # 將列錶轉換為數組 b = np.array(b) 

Numpy查看數組屬性

數組元素個數

b.size

數組形狀

b.shape

數組維度

b.ndim

數組元素類型

b.dtype

快速創建N維數組的api函數

  • 創建10行10列的數值為浮點1的矩陣
array_one = np.ones([10, 10]) 
  • 創建10行10列的數值為浮點0的矩陣
array_zero = np.zeros([10, 10]) 
  • 從現有的數據創建數組
    • array(深拷貝)
    • asarray(淺拷貝)

Numpy創建隨機數組np.random

  • 均勻分佈

    • np.random.rand(10, 10)創建指定形狀(示例為10行10列)的數組(範圍在0至1之間)
    • np.random.uniform(0, 100)創建指定範圍內的一個數
    • np.random.randint(0, 100) 創建指定範圍內的一個整數
  • 正態分佈

    給定均值/標準差/維度的正態分佈np.random.normal(1.75, 0.1, (2, 3))

  • 數組的索引, 切片
# 正態生成4行5列的二維數組 arr = np.random.normal(1.75, 0.1, (4, 5)) print(arr) # 截取第1至2行的第2至3列(從第0行算起) after_arr = arr[1:3, 2:4] print(after_arr) 

 
《python科學計算和可視化學習報告》 數組索引

  • 改變數組形狀(要求前後元素個數匹配)

 
《python科學計算和可視化學習報告》 改變數組形狀

print("reshape函數的使用!") one_20 = np.ones([20]) print("-->1行20列<--") print (one_20) one_4_5 = one_20.reshape([4, 5]) print("-->4行5列<--") print (one_4_5) 

Numpy計算(重要)

條件運算

 
《python科學計算和可視化學習報告》 原始數據

 
《python科學計算和可視化學習報告》 條件判斷

import numpy as np stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) stus_score > 80 

 
《python科學計算和可視化學習報告》 三目運算

import numpy as np stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) np.where(stus_score < 80, 0, 90) 

統計運算

  • 指定軸最大值amax(參數1: 數組; 參數2: axis=0/1; 0表示列1表示行)

 
《python科學計算和可視化學習報告》 求最大值

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) # 求每一列的最大值(0表示列) print("每一列的最大值為:") result = np.amax(stus_score, axis=0) print(result) print("每一行的最大值為:") result = np.amax(stus_score, axis=1) print(result) 
  • 指定軸最小值amin

 
《python科學計算和可視化學習報告》 求最小值

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) # 求每一行的最小值(0表示列) print("每一列的最小值為:") result = np.amin(stus_score, axis=0) print(result) # 求每一行的最小值(1表示行) print("每一行的最小值為:") result = np.amin(stus_score, axis=1) print(result) 
  • 指定軸平均值mean

 
《python科學計算和可視化學習報告》 求平均值

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) # 求每一行的平均值(0表示列) print("每一列的平均值:") result = np.mean(stus_score, axis=0) print(result) # 求每一行的平均值(1表示行) print("每一行的平均值:") result = np.mean(stus_score, axis=1) print(result) 
  • 方差std

 
《python科學計算和可視化學習報告》 求方差

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) # 求每一行的方差(0表示列) print("每一列的方差:") result = np.std(stus_score, axis=0) print(result) # 求每一行的方差(1表示行) print("每一行的方差:") result = np.std(stus_score, axis=1) print(result) 

數組運算

  • 數組與數的運算

 
《python科學計算和可視化學習報告》 加法

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) print("加分前:") print(stus_score) # 為所有平時成績都加5分 stus_score[:, 0] = stus_score[:, 0]+5 print("加分后:") print(stus_score) 

 
《python科學計算和可視化學習報告》 乘法

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) print("減半前:") print(stus_score) # 平時成績減半 stus_score[:, 0] = stus_score[:, 0]*0.5 print("減半后:") print(stus_score) 
  • 數組間也支持加減乘除運算,但基本用不到

 
《python科學計算和可視化學習報告》 image.png

a = np.array([1, 2, 3, 4]) b = np.array([10, 20, 30, 40]) c = a + b d = a - b e = a * b f = a / b print("a+b為", c) print("a-b為", d) print("a*b為", e) print("a/b為", f) 

矩陣運算np.dot()(非常重要)

 
《python科學計算和可視化學習報告》 根據權重計算成績

  • 計算規則

(M行, N列) * (N行, Z列) = (M行, Z列)

 
《python科學計算和可視化學習報告》 矩陣計算總成績

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]]) # 平時成績佔40% 期末成績佔60%, 計算結果 q = np.array([[0.4], [0.6]]) result = np.dot(stus_score, q) print("最終結果為:") print(result) 
  • 矩陣拼接
    • 矩陣垂直拼接

 
《python科學計算和可視化學習報告》 垂直拼接

print("v1為:") v1 = [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]] print(v1) print("v2為:") v2 = [[12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]] print(v2) # 垂直拼接 result = np.vstack((v1, v2)) print("v1和v2垂直拼接的結果為") print(result) 
  • 矩陣水平拼接

 
《python科學計算和可視化學習報告》 水平拼接

print("v1為:") v1 = [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]] print(v1) print("v2為:") v2 = [[12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]] print(v2) # 垂直拼接 result = np.hstack((v1, v2)) print("v1和v2水平拼接的結果為") print(result) 

Numpy讀取數據np.genfromtxt

 
《python科學計算和可視化學習報告》 csv文件以逗號分隔數據

 
《python科學計算和可視化學習報告》 讀取csv格式的文件

如果數值據有無法識別的值出現,會以nan显示,nan相當於np.nan,為float類型.

2.Matplotlib

Matplotlib 是Python中類似 MATLAB 的繪圖工具,熟悉 MATLAB 也可以很快的上手 Matplotlib。

1. 認識Matploblib
1.1 Figure
在任何繪圖之前,我們需要一個Figure對象,可以理解成我們需要一張畫板才能開始繪圖。

import matplotlib.pyplot as plt
fig = plt.figure()
1.2 Axes
在擁有Figure對象之後,在作畫前我們還需要軸,沒有軸的話就沒有繪圖基準,所以需要添加Axes。也可以理解成為真正可以作畫的紙。

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set(xlim=[0.5, 4.5], ylim=[-2, 8], title=’An Example Axes’,
ylabel=’Y-Axis’, xlabel=’X-Axis’)
plt.show()

上的代碼,在一幅圖上添加了一個Axes,然後設置了這個Axes的X軸以及Y軸的取值範圍(這些設置並不是強制的,後面會再談到關於這些設置),效果如下圖:

對於上面的fig.add_subplot(111)就是添加Axes的,參數的解釋的在畫板的第1行第1列的第一個位置生成一個Axes對象來準備作畫。也可以通過fig.add_subplot(2, 2, 1)的方式生成Axes,前面兩個參數確定了面板的劃分,例如 2, 2會將整個面板劃分成 2 * 2 的方格,第三個參數取值範圍是 [1, 2*2] 表示第幾個Axes。如下面的例子:

fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(224)

1.3 Multiple Axes
可以發現我們上面添加 Axes 似乎有點弱雞,所以提供了下面的方式一次性生成所有 Axes:

fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0,0].set(title=’Upper Left’)
axes[0,1].set(title=’Upper Right’)
axes[1,0].set(title=’Lower Left’)
axes[1,1].set(title=’Lower Right’)

fig 還是我們熟悉的畫板, axes 成了我們常用二維數組的形式訪問,這在循環繪圖時,額外好用。

1.4 Axes Vs .pyplot
相信不少人看過下面的代碼,很簡單並易懂,但是下面的作畫方式只適合簡單的繪圖,快速的將圖繪出。在處理複雜的繪圖工作時,我們還是需要使用 Axes 來完成作畫的。

plt.plot([1, 2, 3, 4], [10, 20, 25, 30], color=’lightblue’, linewidth=3)
plt.xlim(0.5, 4.5)
plt.show()

2. 基本繪圖2D
2.1 線
plot()函數畫出一系列的點,並且用線將它們連接起來。看下例子:

x = np.linspace(0, np.pi)
y_sin = np.sin(x)
y_cos = np.cos(x)

ax1.plot(x, y_sin)
ax2.plot(x, y_sin, ‘go–‘, linewidth=2, markersize=12)
ax3.plot(x, y_cos, color=’red’, marker=’+’, linestyle=’dashed’)

在上面的三個Axes上作畫。plot,前面兩個參數為x軸、y軸數據。ax2的第三個參數是 MATLAB風格的繪圖,對應ax3上的顏色,marker,線型。

另外,我們可以通過關鍵字參數的方式繪圖,如下例:

x = np.linspace(0, 10, 200)
data_obj = {‘x’: x,
‘y1’: 2 * x + 1,
‘y2’: 3 * x + 1.2,
‘mean’: 0.5 * x * np.cos(2*x) + 2.5 * x + 1.1}

fig, ax = plt.subplots()

#填充兩條線之間的顏色
ax.fill_between(‘x’, ‘y1’, ‘y2′, color=’yellow’, data=data_obj)

# Plot the “centerline” with `plot`
ax.plot(‘x’, ‘mean’, color=’black’, data=data_obj)

plt.show()

發現上面的作圖,在數據部分只傳入了字符串,這些字符串對一個這 data_obj 中的關鍵字,當以這種方式作畫時,將會在傳入給 data 中尋找對應關鍵字的數據來繪圖。

2.2 散點圖
只畫點,但是不用線連接起來。

x = np.arange(10)
y = np.random.randn(10)
plt.scatter(x, y, color=’red’, marker=’+’)
plt.show()

2.3 條形圖
條形圖分兩種,一種是水平的,一種是垂直的,見下例子:

np.random.seed(1)
x = np.arange(5)
y = np.random.randn(5)

fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2))

vert_bars = axes[0].bar(x, y, color=’lightblue’, align=’center’)
horiz_bars = axes[1].barh(x, y, color=’lightblue’, align=’center’)
#在水平或者垂直方向上畫線
axes[0].axhline(0, color=’gray’, linewidth=2)
axes[1].axvline(0, color=’gray’, linewidth=2)
plt.show()

條形圖還返回了一個Artists 數組,對應着每個條形,例如上圖 Artists 數組的大小為5,我們可以通過這些 Artists 對條形圖的樣式進行更改,如下例:

fig, ax = plt.subplots()
vert_bars = ax.bar(x, y, color=’lightblue’, align=’center’)

# We could have also done this with two separate calls to `ax.bar` and numpy boolean indexing.
for bar, height in zip(vert_bars, y):
if height < 0:
bar.set(edgecolor=’darkred’, color=’salmon’, linewidth=3)

plt.show()

2.4 直方圖
直方圖用於統計數據出現的次數或者頻率,有多種參數可以調整,見下例:

np.random.seed(19680801)

n_bins = 10
x = np.random.randn(1000, 3)

fig, axes = plt.subplots(nrows=2, ncols=2)
ax0, ax1, ax2, ax3 = axes.flatten()

colors = [‘red’, ‘tan’, ‘lime’]
ax0.hist(x, n_bins, density=True, histtype=’bar’, color=colors, label=colors)
ax0.legend(prop={‘size’: 10})
ax0.set_title(‘bars with legend’)

ax1.hist(x, n_bins, density=True, histtype=’barstacked’)
ax1.set_title(‘stacked bar’)

ax2.hist(x, histtype=’barstacked’, rwidth=0.9)

ax3.hist(x[:, 0], rwidth=0.9)
ax3.set_title(‘different sample sizes’)

fig.tight_layout()
plt.show()

參數中density控制Y軸是概率還是數量,與返回的第一個的變量對應。histtype控制着直方圖的樣式,默認是 ‘bar’,對於多個條形時就相鄰的方式呈現如子圖1, ‘barstacked’ 就是疊在一起,如子圖2、3。 rwidth 控制着寬度,這樣可以空出一些間隙,比較圖2、3. 圖4是只有一條數據時。

 

2.5 餅圖
labels = ‘Frogs’, ‘Hogs’, ‘Dogs’, ‘Logs’
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # only “explode” the 2nd slice (i.e. ‘Hogs’)

fig1, (ax1, ax2) = plt.subplots(2)
ax1.pie(sizes, labels=labels, autopct=’%1.1f%%’, shadow=True)
ax1.axis(‘equal’)
ax2.pie(sizes, autopct=’%1.2f%%’, shadow=True, startangle=90, explode=explode,
pctdistance=1.12)
ax2.axis(‘equal’)
ax2.legend(labels=labels, loc=’upper right’)

plt.show()

餅圖自動根據數據的百分比畫餅.。labels是各個塊的標籤,如子圖一。autopct=%1.1f%%表示格式化百分比精確輸出,explode,突出某些塊,不同的值突出的效果不一樣。pctdistance=1.12百分比距離圓心的距離,默認是0.6.

2.6 箱形圖
為了專註於如何畫圖,省去數據的處理部分。 data 的 shape 為 (n, ), data2 的 shape 為 (n, 3)。

fig, (ax1, ax2) = plt.subplots(2)
ax1.boxplot(data)
ax2.boxplot(data2, vert=False) #控制方向

2.7 泡泡圖
散點圖的一種,加入了第三個值 s 可以理解成普通散點,畫的是二維,泡泡圖體現了Z的大小,如下例:

np.random.seed(19680801)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2 # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

2.8 等高線(輪廓圖)
有時候需要描繪邊界的時候,就會用到輪廓圖,機器學習用的決策邊界也常用輪廓圖來繪畫,見下例:

fig, (ax1, ax2) = plt.subplots(2)
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
ax1.contourf(x, y, z)
ax2.contour(x, y, z)

上面畫了兩個一樣的輪廓圖,contourf會填充輪廓線之間的顏色。數據x, y, z通常是具有相同 shape 的二維矩陣。x, y 可以為一維向量,但是必需有 z.shape = (y.n, x.n) ,這裏 y.n 和 x.n 分別表示x、y的長度。Z通常表示的是距離X-Y平面的距離,傳入X、Y則是控制了繪製等高線的範圍。

 

3 布局、圖例說明、邊界等
3.1區間上下限
當繪畫完成后,會發現X、Y軸的區間是會自動調整的,並不是跟我們傳入的X、Y軸數據中的最值相同。為了調整區間我們使用下面的方式:

ax.set_xlim([xmin, xmax]) #設置X軸的區間
ax.set_ylim([ymin, ymax]) #Y軸區間
ax.axis([xmin, xmax, ymin, ymax]) #X、Y軸區間
ax.set_ylim(bottom=-10) #Y軸下限
ax.set_xlim(right=25) #X軸上限

具體效果見下例:

x = np.linspace(0, 2*np.pi)
y = np.sin(x)
fig, (ax1, ax2) = plt.subplots(2)
ax1.plot(x, y)
ax2.plot(x, y)
ax2.set_xlim([-1, 6])
ax2.set_ylim([-1, 3])
plt.show()

可以看出修改了區間之後影響了圖片显示的效果。

3.2 圖例說明
我們如果我們在一個Axes上做多次繪畫,那麼可能出現分不清哪條線或點所代表的意思。這個時間添加圖例說明,就可以解決這個問題了,見下例:

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 20, 25, 30], label=’Philadelphia’)
ax.plot([1, 2, 3, 4], [30, 23, 13, 4], label=’Boston’)
ax.scatter([1, 2, 3, 4], [20, 10, 30, 15], label=’Point’)
ax.set(ylabel=’Temperature (deg C)’, xlabel=’Time’, title=’A tale of two cities’)
ax.legend()
plt.show()

在繪圖時傳入 label 參數,並最後調用ax.legend()显示體力說明,對於 legend 還是傳入參數,控製圖例說明显示的位置:

Location String Location Code
‘best’ 0
‘upper right’ 1
‘upper left’ 2
‘lower left’ 3
‘lower right’ 4
‘right’ 5
‘center left’ 6
‘center right’ 7
‘lower center’ 8
‘upper center’ 9
‘center’ 10
3.3 區間分段
默認情況下,繪圖結束之後,Axes 會自動的控制區間的分段。見下例:

data = [(‘apples’, 2), (‘oranges’, 3), (‘peaches’, 1)]
fruit, value = zip(*data)

fig, (ax1, ax2) = plt.subplots(2)
x = np.arange(len(fruit))
ax1.bar(x, value, align=’center’, color=’gray’)
ax2.bar(x, value, align=’center’, color=’gray’)

ax2.set(xticks=x, xticklabels=fruit)

#ax.tick_params(axis=’y’, direction=’inout’, length=10) #修改 ticks 的方向以及長度
plt.show()

上面不僅修改了X軸的區間段,並且修改了显示的信息為文本。

3.4 布局
當我們繪畫多個子圖時,就會有一些美觀的問題存在,例如子圖之間的間隔,子圖與畫板的外邊間距以及子圖的內邊距,下面說明這個問題:

fig, axes = plt.subplots(2, 2, figsize=(9, 9))
fig.subplots_adjust(wspace=0.5, hspace=0.3,
left=0.125, right=0.9,
top=0.9, bottom=0.1)

#fig.tight_layout() #自動調整布局,使標題之間不重疊
plt.show()

通過fig.subplots_adjust()我們修改了子圖水平之間的間隔wspace=0.5,垂直方向上的間距hspace=0.3,左邊距left=0.125 等等,這裏數值都是百分比的。以 [0, 1] 為區間,選擇left、right、bottom、top 注意 top 和 right 是 0.9 表示上、右邊距為百分之10。不確定如果調整的時候,fig.tight_layout()是一個很好的選擇。之前說到了內邊距,內邊距是子圖的,也就是 Axes 對象,所以這樣使用 ax.margins(x=0.1, y=0.1),當值傳入一個值時,表示同時修改水平和垂直方向的內邊距。

觀察上面的四個子圖,可以發現他們的X、Y的區間是一致的,而且這樣显示並不美觀,所以可以調整使他們使用一樣的X、Y軸:

fig, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)
ax1.plot([1, 2, 3, 4], [1, 2, 3, 4])
ax2.plot([3, 4, 5, 6], [6, 5, 4, 3])
plt.show()

3.5 軸相關
改變邊界的位置,去掉四周的邊框:

fig, ax = plt.subplots()
ax.plot([-2, 2, 3, 4], [-10, 20, 25, 5])
ax.spines[‘top’].set_visible(False) #頂邊界不可見
ax.xaxis.set_ticks_position(‘bottom’) # ticks 的位置為下方,分上下的。
ax.spines[‘right’].set_visible(False) #右邊界不可見
ax.yaxis.set_ticks_position(‘left’)

# “outward”
# 移動左、下邊界離 Axes 10 個距離
#ax.spines[‘bottom’].set_position((‘outward’, 10))
#ax.spines[‘left’].set_position((‘outward’, 10))

# “data”
# 移動左、下邊界到 (0, 0) 處相交
ax.spines[‘bottom’].set_position((‘data’, 0))
ax.spines[‘left’].set_position((‘data’, 0))

# “axes”
# 移動邊界,按 Axes 的百分比位置
#ax.spines[‘bottom’].set_position((‘axes’, 0.75))
#ax.spines[‘left’].set_position((‘axes’, 0.3))

plt.show()

二.pands,numpy,matplotlib的應用(雷達圖)

 

# encoding: utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 显示中文
labels = np.array([u'100', u'90', u'80',u'70']) # 標籤
dataLenth = 4  # 數據長度
data_radar = np.array([70, 1, 1, 1]) # 數據
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)  # 分割圓周長
data_radar = np.concatenate((data_radar, [data_radar[0]]))  # 閉合
angles = np.concatenate((angles, [angles[0]]))  # 閉合
plt.polar(angles, data_radar, 'bo-', linewidth=1)  # 做極坐標系
plt.thetagrids(angles * 180/np.pi, labels)  # 做標籤
plt.fill(angles, data_radar, facecolor='r', alpha=0.25)# 填充
plt.ylim(0, 10)
plt.title(u'03帥小莫的python123成績')
plt.show()

 

效果如下

《python科學計算和可視化學習報告》

 

 

 三.Python自定義手繪風

1.在命令行安裝Pillow及numpy庫

pip install Pillow
pip install numpy

 

2.代碼

# encoding: utf-8
from PIL import Image
import numpy as np

a = np.asarray(Image.open(r'C:\Users\wg-2\Desktop\timg.jpg').convert('L')).astype('float')

depth = 10.  # (0-100)
grad = np.gradient(a)  # 取圖像灰度的梯度值
grad_x, grad_y = grad  # 分別取橫縱圖像梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.
A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)
uni_x = grad_x / A
uni_y = grad_y / A
uni_z = 1. / A

vec_el = np.pi / 2.2  # 光源的俯視角度,弧度值
vec_az = np.pi / 4.  # 光源的方位角度,弧度值
dx = np.cos(vec_el) * np.cos(vec_az)  # 光源對x 軸的影響
dy = np.cos(vec_el) * np.sin(vec_az)  # 光源對y 軸的影響
dz = np.sin(vec_el)  # 光源對z 軸的影響

b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z)  # 光源歸一化
b = b.clip(0, 255)

im = Image.fromarray(b.astype('uint8'))  # 重構圖像
im.save(r'C:\Users\wg-2\Desktop\1.jpg')

3.效果如下

原圖:

《python科學計算和可視化學習報告》

 

手繪圖:

 

《python科學計算和可視化學習報告》

ps :是不是很美呢?你還可以根據自己愛好修改各種數值使手繪風更加貼近個人哦~

 

 

四.Python繪製數學或物理規律曲線

我們大家都學過正弦餘弦的公式,也畫過它的圖像,現在我們通過python的numpy以及matplotlib庫將它畫出來,

直接上代碼,不懂的往回翻。

 

代碼:

 

import numpy as np
import pylab as pl
import matplotlib.font_manager as fm
import matplotlib
t=np.arange(0.0,2.0*np.pi,0.01)
s=np.sin(t)
z=np.cos(t)
pl.plot(t,s,label='正弦')
pl.plot(t,z,label='餘弦')
pl.xlabel('x-變量',fontproperties='SimHei',fontsize=18)
pl.ylabel('y-正弦餘弦函數值',fontproperties='SimHei',fontsize=18)
pl.title('sin-cos函數圖像',fontproperties='SimHei',fontsize=24)
pl.show()

 

效果如下:

《python科學計算和可視化學習報告》

 

 

 當然利用這個可以畫其他的更多的更複雜數學公式及物理公式,這就要看你們是否想要去實現了~

 

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *