首頁 > 軟體

Python 資料視覺化超詳細講解折線圖的實現

2022-03-17 16:00:13

繪製簡單的折線圖

✅在使用matplotlib繪製簡單的折線圖之前首先需要安裝matplotlib,直接在pycharm終端pip install matplotlib即可

✅使用matplotlib繪製簡單的折線圖,再對其進行客製化,實現資料的視覺化操作

import matplotlib.pyplot as plt  # 匯入pyplot模組並設定別名為plt

squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

執行結果如下:

修改標籤文字和線條粗細

上圖所示的圖形表示的數位越來越大,但標籤文字太小,線條太細,不方便觀察,這時就需要調整一下增加圖形的可讀性

import matplotlib.pyplot as plt  # 匯入pyplot模組並設定別名為plt

squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)  # 函數linewidth設定繪製線條的粗細
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

校正圖形

圖形更容易閱讀了,但我們發現沒有正確的繪製資料,折線圖的終點指出4的平方為25!

向plot()提供一系列數位時,它假設第一個資料點對應的x座標值為0,但我們的第一個點對應的x值為1。為改變這種預設行為,我們可以給plot同時提供輸入值和輸出值。

import matplotlib.pyplot as plt  # 匯入pyplot模組並設定別名為plt

input_value = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]   
plt.plot(input_value, squares, linewidth=5)  # 函數linewidth設定繪製線條的粗細
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

現在plot()成功繪製資料,因為我們同時提供了輸入值和輸出值。使用plot()時可指定各種實參,還可使用眾多函數對影象進行客製化

使用scatter()繪製散點圖並設定其格式

有時候需要繪製散點圖並設定各個資料的格式。例如:你可能想以一種顏色顯示較小的值,用一種顏色顯示較大的值。繪製大型資料集時,你還可以對每個點都設定同樣的格式,再使用不同的樣式選項重新繪製某個點,以突出它們 ✅要繪製單個點,可使用函數scatter(),並向它傳遞一對x,y座標,它將在指定繪製繪製一個點

import matplotlib.pyplot as plt

plt.scatter(2, 4)  # 向scatter函數傳遞一對x,y座標
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

下面來設定輸出的樣式,使其更有趣:新增標題,給座標軸加上標籤,並設定文字格式

import matplotlib.pyplot as plt

plt.scatter(2, 4, s=200)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

使用scatter()繪製一系列點

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

自動計算資料

手動計算列表包含的值很麻煩,可以利用python中的迴圈來解決,下面是繪製1000個點的範例:

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, s=10)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 設定每個座標軸的取值範圍
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

✅這裡需要注意函數axis需要傳入四個值,x,y座標的最小值,最大值 效果如下:

刪除資料點的輪廓

要刪除資料點的輪廓,可在呼叫scatter()時傳遞實參edgecolor=‘none’

plt.scatter(x_values, y_values, edgecolors='none', s=10)
import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, edgecolors='none', s=10)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 設定每個座標軸的取值範圍
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

自定義顏色

要修改資料點的顏色,可向scatter()傳遞引數c,並將其設定要使用的顏色的名稱

plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10)
import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 設定每個座標軸的取值範圍
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

效果如下:

使用顏色對映

顏色對映(colormap)是一系列顏色,它們從顏色漸變到結束顏色。在視覺化中,顏色對映用於突出資料的規律,例如,你可能用較淺的顏色顯示較小的值,並使用較深的顏色顯示較大的值

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
# 將c設定為y值列表,使用引數cmap告訴pyplot使用哪個顏色對映
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 設定每個座標軸的取值範圍
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

自動儲存圖表

要讓程式自動將圖表儲存到檔案中,可將對plt.show()的呼叫替換為對plt.sacefig()的呼叫

plt.savefig('squares.png',bbox_inches='tight')

第一個實參指定要以什麼樣的檔名儲存圖表,第二個實參指定將圖表多餘的空白區域裁剪(如果要保留,可省略這個實參)

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
# 將c設定為y值列表,使用引數cmap告訴pyplot使用哪個顏色對映
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10)  # 向scatter函數傳遞一對x,y座標
# 設定圖表標題,並給座標軸加上標籤
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 設定刻度標記的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 設定每個座標軸的取值範圍
plt.axis([0, 1100, 0, 1100000])
plt.savefig('squares.png',bbox_inches='tight')
plt.show()  # 開啟matplotib檢視器,並顯示繪製的圖形

儲存效果如下:

✅注意事項: 一定要把儲存圖表的程式碼放在plt.show前面,要是放在後面show會重新建立新的圖片

以上就是繪製簡單折線圖的教學,如果有改進的建議歡迎在評論區留言奧


IT145.com E-mail:sddin#qq.com