5.設(shè)置隨機(jī)漫步圖的樣式
給點(diǎn)著色
我們將使用顏色映射來(lái)指出漫步中各點(diǎn)的先后順序,并刪除點(diǎn)的輪廓顏色
為根據(jù)漫步中各點(diǎn)的先后順序著色,我們傳遞參數(shù)c,并將其設(shè)置為一個(gè)列表
其中包含各點(diǎn)的先后順序,由于這些點(diǎn)是按順序繪制的
因此給參數(shù)指定的列表只需包含數(shù)字1~5000,如下所示:
import matplotlib.pyplot as plt
from random_walk import RandomWalk
while True:
#創(chuàng)建一個(gè)RandomWalk實(shí)例,并將其包含的點(diǎn)都繪制出來(lái)
rw = RandomWalk()
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,
edgecolor='none',s=5)
plt.show()
keep_running = input('Make another walk? (y/n):')
if keep_running == 'n':
break
我們使用了range()生成了一個(gè)數(shù)字列表
其中包含的數(shù)字與漫步包含的點(diǎn)數(shù)相同
接下來(lái),我們將這個(gè)列表存儲(chǔ)在point_numbers中
以便后面使用它來(lái)設(shè)置每個(gè)漫步點(diǎn)的顏色,我們將參數(shù)c設(shè)置為point_numbers
指定使用顏色映射Blues,并傳遞實(shí)參edgecolor=none以刪除每個(gè)點(diǎn)周圍的輪廓
最終的隨機(jī)漫步圖從淺藍(lán)色漸變?yōu)樯钏{(lán)色,如圖:

三,繪制三角函數(shù)圖像
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-np.pi, np.pi, 50)
C,S = np.cos(X), np.sin(X)
plt.plot(X,C)
plt.plot(X,S)
plt.show()
使用import導(dǎo)入模塊matplotlib.pyplot,并簡(jiǎn)寫成plt
使用import導(dǎo)入模塊numpy,并簡(jiǎn)寫成np
使用np.linspace定義x:范圍是(-π,π);個(gè)數(shù)是50.
仿真一維數(shù)據(jù)組(X,C)表示COSX,仿真一維數(shù)據(jù)組(X,S)表示SINX
繪制圖像如下:

下面對(duì)圖形進(jìn)行修飾
1.移動(dòng)x,y軸,使坐標(biāo)原點(diǎn)為(0,0)
2.修改圖線屬性,并將對(duì)應(yīng)的函數(shù)注明在圖線左上角
3.修改坐標(biāo)值
4.備注圖像名稱
大概想到這些,下面開始改代碼
修改后如下:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
import numpy as np
X = np.linspace(-np.pi, np.pi, 50)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=1.5, linestyle="--", label="cos")
plt.plot(X, S, color="red", linewidth=1.5, linestyle="-", label="sin")
plt.legend(loc='upper left')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],['${-\pi}$', '${-\pi}{/2}$', '$0$', '${\pi}{/2}$', '${\pi}$'])
plt.yticks([-1,-0.5,0,0.5,1],['$-1$','$-1/2$','$0$','$1/2$','$1$'])
plt.title('正余弦函數(shù)',fontsize=15)
# plt.xlabel('x',fontsize=14)
# plt.ylabel('y',fontsize=14)
plt.show()
現(xiàn)在逐條解釋代碼含義
plt.plot(X, C, color="blue", linewidth=1.5, linestyle="--", label="cos")
plt.plot(X, S, color="red", linewidth=1.5, linestyle="-", label="sin")
plt.legend(loc='upper left')
設(shè)置圖線顏色,線重(線的粗細(xì)),--為虛線,-為實(shí)線
legend將要顯示的信息來(lái)自于上面代碼中的label參數(shù)
loc='upper right' 表示圖例將添加在圖中的右上角.
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
使用plt.gca獲取當(dāng)前坐標(biāo)軸信息
使用.spines設(shè)置邊框:右側(cè)邊框;使用.set_color設(shè)置邊框顏色:無(wú)色
使用.spines設(shè)置邊框:上邊框;使用.set_color設(shè)置邊框顏色:無(wú)色
使用.xaxis.set_ticks_position設(shè)置x坐標(biāo)刻度數(shù)字或名稱的位置:bottom
使用.spines設(shè)置邊框:x軸;使用.set_position設(shè)置邊框位置:y=0的位置
使用.yaxis.set_ticks_position設(shè)置y坐標(biāo)刻度數(shù)字或名稱的位置:left
使用.spines設(shè)置邊框:y軸;使用.set_position設(shè)置邊框位置:x=0的位置
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],['${-\pi}$', '${-\pi}{/2}$', '$0$', '${\pi}{/2}$', '${\pi}$'])
plt.yticks([-1,-0.5,0,0.5,1],['$-1$','$-1/2$','$0$','$1/2$','$1$'])
使用plt.xticks設(shè)置x軸刻度以及名稱:刻度為[-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
對(duì)應(yīng)刻度的名稱為['-π', '-π/2', '0', 'π/2', 'π']
同理設(shè)置y軸刻度和名稱
再加上title,最終效果圖如下:
