用python做數據分析,matplotlib庫是必備的數據可視化工具:

它包含了大量的工具,你可以使用這些工具創建各種圖形,包括簡單的散點圖,正弦曲線,甚至是三維圖形。Python 科學計算社區經常使用它完成數據可視化的工作。

(不知道如何配置開發環境的朋友可以直接下載anaconda,然後打開jupyter就好了)

1.點擊download

Anaconda Python/R Distribution - Anaconda?

www.anaconda.com
圖標

2.下載完成後,點擊點擊,IDE就搞定了,可以開始編程咯

3運行程序就是Ctrl+Enter,其他常用的快捷鍵不懂得老哥可以看看我之前寫的那個文章,

是枝裕和:外:使用python+jupyter做數據分析與挖掘?

zhuanlan.zhihu.com
圖標

快速配置完,話不多說,開始囖~

1.畫一個簡單的圖形

首先我們要畫一條在 [0, 2pi] 上的正弦曲線。讀者應該會注意到我們在這裡使用了 Numpy 庫,但是即便你沒有使用過這個庫也不用擔心,在後面的文章中我們也會介紹到 Numpy 庫。

import matplotlib.pyplot as plt import numpy as np

以上這些就是我們將要用到的導入模塊。在我的上一篇文章(以及另一篇文章)中都提到過 from x import * 是一種糟糕的導入方式。我們不想在程序里重複書寫 matplotlib.pyplotnumpy,這種書寫方式過於冗長,因此我們採用了上面的折中寫法。

# 簡單的繪圖 x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x)) # 如果沒有第一個參數 x,圖形的 x 坐標默認為數組的索引 plt.show() # 顯示圖形

上面的代碼將畫出一個簡單的正弦曲線。np.linspace(0, 2 * np.pi, 50) 這段代碼將會生成一個包含 50 個元素的數組,這 50 個元素均勻的分布在 [0, 2pi] 的區間上。

plot 命令以一種簡潔優雅的方式創建了圖形。提醒一下,如果沒有第一個參數 x,圖形的 x 軸坐標將不再是 0 到 2pi,而應該是數組的索引範圍。

最後一行代碼 `plt.show() 將圖形顯示出來,如果沒有這行代碼圖像就不會顯示。

運行代碼後應該會類似得到下面的圖形:

2.在一張圖上繪製兩個數據集

大多數時候讀者可能更想在一張圖上繪製多個數據集。用 Matplotlib 也可以輕鬆實現這一點。

x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x), x, np.sin(2 * x)) plt.show()

上面的代碼同時繪製了表示函數 sin(x) 和 sin(2x) 的圖形。這段代碼和前面繪製一個數據集的代碼幾乎完全相同,只有一點例外,這段代碼在調用 plt.plot() 的時候多傳入了一個數據集,並用逗號與第一個數據集分隔開。

最後你會得到類似於下面包含兩條曲線的圖形:

3.自定義圖形的外觀

當在同一個圖形上展示多個數據集時,通過改變線條的外觀來區分不同的數據集變得非常必要。

# 自定義曲線的外觀 x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x), r-o, x, np.cos(x), g--) plt.show()

上述代碼展示了兩種不同的曲線樣式:r-og--。字母 r 和 g 代表線條的顏色,後面的符號代表線和點標記的類型。例如 -o 代表包含實心點標記的實線,-- 代表虛線。其他的參數需要讀者自己去嘗試,這也是學習 Matplotlib 最好的方式。

顏色: 藍色 - b 綠色 - g 紅色 - r 青色 - c 品紅 - m 黃色 - y 黑色 - k(b代表藍色,所以這裡用黑色的最後一個字母) 白色 - w

線: 直線 - - 虛線 - -- 點線 - : 點劃線 - -. 常用點標記 點 - . 像素 - , 圓 - o 方形 - s 三角形 - ^ 更多點標記樣式點擊這裡

最後你會得到類似下面的圖形:

4.使用子圖

使用子圖可以在一個窗口繪製多張圖。

# 使用子圖 x = np.linspace(0, 2 * np.pi, 50) plt.subplot(2, 1, 1) # (行,列,活躍區) plt.plot(x, np.sin(x), r) plt.subplot(2, 1, 2) plt.plot(x, np.cos(x), g) plt.show()

使用子圖只需要一個額外的步驟,就可以像前面的例子一樣繪製數據集。即在調用 plot() 函數之前需要先調用 subplot() 函數。該函數的第一個參數代表子圖的總行數,第二個參數代表子圖的總列數,第三個參數代表活躍區域。

活躍區域代表當前子圖所在繪圖區域,繪圖區域是按從左至右,從上至下的順序編號。例如在 4×4 的方格上,活躍區域 6 在方格上的坐標為 (2, 2)。

最終你會得到類似下面的圖形:

5.簡單的散點圖

散點圖是一堆離散點的集合。用 Matplotlib 畫散點圖也同樣非常簡單。

# 簡單的散點圖 x = np.linspace(0, 2 * np.pi, 50) y = np.sin(x) plt.scatter(x,y) plt.show()

正如上面代碼所示,你只需要調用 scatter() 函數並傳入兩個分別代表 x 坐標和 y 坐標的數組。注意,我們通過 plot 命令並將線的樣式設置為 bo 也可以實現同樣的效果。

最後你會得到類似下面的無線圖形:

6.彩色映射散點圖

另一種你可能用到的圖形是彩色映射散點圖。這裡我們會根據數據的大小給每個點賦予不同的顏色和大小,並在圖中添加一個顏色欄。

# 彩色映射散點圖 x = np.random.rand(1000) y = np.random.rand(1000) size = np.random.rand(1000) * 50 colour = np.random.rand(1000) plt.scatter(x, y, size, colour) plt.colorbar() plt.show()

上面的代碼大量的用到了 np.random.rand(1000),原因是我們繪圖的數據都是隨機產生的。

同前面一樣我們用到了 scatter() 函數,但是這次我們傳入了另外的兩個參數,分別為所繪點的大小和顏色。通過這種方式使得圖上點的大小和顏色根據數據的大小產生變化。

然後我們用 colorbar() 函數添加了一個顏色欄。

最後你會得到類似於下面的彩色散點圖:

7.直方圖

直方圖是另一種常見的圖形,也可以通過幾行代碼創建出來。

# 直方圖 x = np.random.randn(1000) plt.hist(x, 50) plt.show()

直方圖是 Matplotlib 中最簡單的圖形之一。你只需要給 hist() 函數傳入一個包含數據的數組。第二個參數代表數據容器的個數。數據容器代表不同的值的間隔,並用來包含我們的數據。數據容器越多,圖形上的數據條就越多。

最終你會得到類似下面的直方圖:

8.標題,標籤和圖例

當需要快速創建圖形時,你可能不需要為圖形添加標籤。但是當構建需要展示的圖形時,你就需要添加標題,標籤和圖例。

# 添加標題,坐標軸標記和圖例 x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x), r-x, label=Sin(x)) plt.plot(x, np.cos(x), g-^, label=Cos(x)) plt.legend() # 展示圖例 plt.xlabel(Rads) # 給 x 軸添加標籤 plt.ylabel(Amplitude) # 給 y 軸添加標籤 plt.title(Sin and Cos Waves) # 添加圖形標題 plt.show()

為了給圖形添加圖例,我們需要在 plot() 函數中添加命名參數 label 並賦予該參數相應的標籤。然後調用 legend() 函數就會在我們的圖形中添加圖例。

接下來我們只需要調用函數 title()xlabel()ylabel() 就可以為圖形添加標題和標籤。

你會得到類似於下面這張擁有標題、標籤和圖例的圖形:

以上內容應該足夠幫助各位開始使用 Matplotlib 和 Python 實現數據可視化

總之強烈推薦用這個庫啦,開發工具就是jupyter就好了(anaconda),很方便的。

推薦閱讀:

相关文章