數(shù)據(jù)可視化<第四天>

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,最終效果圖如下:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容