Python數據可視化(一) 繪製折線圖和散點圖

對數據可視化的淺認知

數據可視化是任何數據科學或機器學習的重要組成部分。可視化能將數據以更加直觀的方式展現出來,使數據更加客觀、更具說服力。同時,也易於發現隱藏在數據中的規律和意義。尤其對於那些大型高維度數據集,能夠以清晰的、簡潔的和令人信服的方式呈現最終結果,是非常重要的。

選擇工具:matplotlib

Python數據可視化最流行的工具之一是 matplotlib,它是一個數學繪圖庫,我們可以用它來製作簡單的圖表,如折線圖和散點圖。也可以基於隨機漫步概念生成一個更有趣的數據集——根據一系列隨機決策生成的圖表。

安裝 matplotlib

這裏準備了兩份參考文檔,來幫助你完成安裝
Matplotlib 安裝
在Pycharm中安裝matplotlib
另外,需查看可用matplotlib製作的各種圖表,請訪問 http://matplotlib.org/,單擊畫廊中的示例,就可查看用於生成該圖表的代碼。

一、繪製簡單的折線圖

例如:使用平方數序列 1、 4、 9、 16和25來繪製這個圖表

import matplotlib.pyplot as plt 

squares = [1, 4, 9, 16, 25] 
plt.plot(squares) 
plt.show()

首先導入模塊pyplot,該模塊包含很多用於生成圖表的函數。再創建一個平方數列表,並傳遞給函數plot(),這個函數嘗試根據這些數字繪製有意義的圖形。調用函數plt.show()打開matplotlib查看器,並顯示繪製的圖形。

修改標籤文字和線條粗細

import matplotlib.pyplot as plt 

squares = [1, 4, 9, 16, 25] 
plt.plot(squares, linewidth=5) 

#設置圖表標題,並給座標軸加上標籤 
plt.title("Square Numbers", fontsize=24) 
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14) 

#設置刻度標記的大小 
plt.tick_params(axis='both', labelsize=14) 
plt.show()

參數linewidth決定了plot()繪製的線條的粗細。函數title()給圖表指定標題。參數fontsize指定了圖表中文字的大小。函數xlabel()ylabel()能夠爲每條軸設置標題;而函數tick_params()設置刻度的樣式,其中指定的實參將影響x軸和y軸上的刻度(axis='both'),並將刻度標記的字號設置爲 14(labelsize=14)。

校正圖形

圖形更容易閱讀後,我們發現當前並沒有正確地繪製數據:折線圖的終點指出4.0的平方爲25!原因是:向plot()提供一系列數字時,它假設第一個數據點對應的x座標值爲0,但我們的第一個點對應的x值爲1。爲改變這種默認行爲,可以給plot()同時提供輸入值和輸出值:

import matplotlib.pyplot as plt 

input_values = [1, 2, 3, 4, 5] 
squares = [1, 4, 9, 16, 25] 
plt.plot(input_values, squares, linewidth=5) 

#設置圖表標題並給座標軸加上標籤
--snip--

二、使用scatter()繪製散點圖

要繪製單個點,可使用函數scatter(),並向它傳遞一對(x,y)座標

import matplotlib.pyplot as plt 

plt.scatter(2, 4) 
plt.show()

使用scatter()繪製一系列點

要繪製一系列的點,可向scatter()傳遞兩個分別包含x值和y值的列表,如下所示:

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) 

#設置圖表標題並給座標軸指定標籤
--snip--

列表x_values包含要計算其平方值的數字,而列表y_values包含前述每個數字的平方值。將這些列表傳遞給scatter(),並使用實參s設置繪製圖形時使用的點的尺寸。matplotlib依次從每個列表中讀取一個值來繪製一個點。要繪製的點的座標分別爲 (1, 1)、(2, 4)、(3, 9)、(4, 16)和(5, 25)

自動計算數據

讓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=40)

#設置圖表標題並給座標軸加上標籤
--snip--

#設置每個座標軸的取值範圍 
plt.axis([0, 1100, 0, 1100000]) 
plt.show()

首先創建一個包含x值的列表,其中包含數字1~1000。接下來是一個生成y值的列表解析,它遍歷x值(for x in x_values),計算其平方值,並將結果存儲到列表 y_values中。然後,將輸入列表和輸出列表傳遞給scatter()。使用函數axis()指定了每個座標軸的取值範圍。函數axis()要求提供四個值:x和y座標軸的最小值和最大值。在這裏,我們將x座標軸的取值範圍設置爲0-1100,將y座標軸的取值範圍設置爲0-1100000。

刪除數據點的輪廓

matplotlib繪製的散點圖中,各個點默認爲藍色點和黑色輪廓,要刪除數據點的輪廓,可在調用scatter()時傳遞實參edgecolor='none'

自定義顏色

要修改數據點的顏色,可向scatter()傳遞參數 color,並將其設置爲要使用的顏色的名稱

plt.scatter(x_values, y_values, color='red', edgecolor='none', s=40)

還可以使用RGB顏色模式自定義顏色。要指定自定義顏色,可傳遞參數 color,並將其設置爲一個元組,其中包含三個0 ~ 1之間的小數值,它們分別表示紅色、綠色和藍色分量,值越接近 0,指定的顏色越深,值越接近 1,指定的顏色越淺。例如:創建一個由淡藍色點組成的散點圖

plt.scatter(x_values, y_values, color=(0, 0, 0.8), edgecolor='none', s=40)

使用顏色映射

顏色映射(colormap)是一系列顏色,它們從起始顏色漸變到結束顏色。在可視化中,顏色映射用於突出數據的規律,例如:用較淺的顏色來顯示較小的值,而用較深的顏色來顯示較大的值。

plt.scatter(x_values, y_values, c=y_values, cmap='Blues', edgecolor='none', s=40)

我們將參數c設置成y值列表,並使用參數cmap告訴pyplot使用哪個顏色映射。這些代碼將y值較小的點顯示爲淺藍色,將y值較大的點顯示爲深藍色

要了解pyplot中所有的顏色映射,請訪問http://matplotlib.org/,單擊Examples,向下滾動到Color Examples,再單擊Colormaps_reference。

自動保存圖表

要讓程序自動將圖表保存到文件中,可調用plt.savefig()

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

第一個實參指定要以什麼樣的文件名保存圖表,這個文件將存儲到python程序所在的目錄中;第二個實參將圖表多餘的空白區域裁剪掉。如果要保留圖表周圍多餘的空白區域,可省略這個實參。
Py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章