Python 數據科學入門1:Matplotlib

第一章 Matplotlib 簡介

歡迎閱讀 Python 3+ Matplotlib 系列教程。 在本系列中,我們將涉及 Matplotlib 數據可視化模塊的多個方面。 Matplotlib 能夠創建多數類型的圖表,如條形圖,散點圖,條形圖,餅圖,堆疊圖,3D 圖和地圖圖表。

首先,為了實際使用 Matplotlib,我們需要安裝它。

如果你安裝了更高版本的 Python,你應該能夠打開cmd.exe或終端,然後執行:

<code>pip install matplotlib1/<code>

注意:如果上面的較短命令不工作,你可能需要執行C:/Python34/Scripts/pip install matplotlib。

如果在導入matplotlib時,你會收到類似『無命名模塊』和模塊名稱的錯誤,這意味著你還需要安裝該模塊。 一個常見的問題是缺少名為six的模塊。 這意味著你需要使用pip安裝six。

或者,你可以前往 Matplotlib.org 並通過訪問下載頁面下載適當的版本進行安裝。 請記住,因為你的操作系統為 64 位,你不一定需要 64 位版本的 Python。 如果你不打算嘗試 64 位,你可以使用 32 位。 打開 IDLE 並閱讀頂部。 如果它說你是 64 位,你就是 64 位,如果它說是 32 位,那麼你就是 32 位。 一旦你安裝了 Python,你就做好了準備,你可以編寫任何你想要的邏輯。 我喜歡使用 IDLE 來編程,但你可以隨意使用任何你喜歡的東西。

<code>import matplotlib.pyplot as plt1/<code>

這一行導入集成的pyplot,我們將在整個系列中使用它。 我們將pyplot導入為plt,這是使用pylot的 python 程序的傳統慣例。

<code>plt.plot([1,2,3],[5,7,4])1/<code>

接下來,我們調用plot的.plot方法繪製一些座標。 這個.plot需要許多參數,但前兩個是'x'和'y'座標,我們放入列表。 這意味著,根據這些列表我們擁有 3 個座標:1,5 2,7和3,4。

plt.plot在後臺『繪製』這個繪圖,但繪製了我們想要的一切之後,當我們準備好的時候,我們需要把它帶到屏幕上。

<code>plt.show()1/<code>

這樣,應該彈出一個圖形。 如果沒有,有時它可以彈出,或者你可能得到一個錯誤。 你的圖表應如下所示:

Python 數據科學入門1:Matplotlib

這個窗口是一個 matplotlib 窗口,它允許我們查看我們的圖形,以及與它進行交互和訪問。 你可以將鼠標懸停在圖表上,並查看通常在右下角的座標。 你也可以使用按鈕。 它們可能在不同的位置,但在上圖中,這些按鈕在左下角。

Home(主頁)

Python 數據科學入門1:Matplotlib

一旦你開始瀏覽你的圖表,主頁按鈕會幫助你。 如果你想要返回原始視圖,可以單擊它。 在瀏覽圖表之前單擊此按鈕將不會生效。

Forward/Back(前進/後退)

Python 數據科學入門1:Matplotlib

這些按鈕可以像瀏覽器中的前進和後退按鈕一樣使用。 你可以單擊這些來移回到你之前的位置,或再次前進。

Pan(平移)

Python 數據科學入門1:Matplotlib

你可以點擊平移按鈕,之後點擊並拖拽你的圖表。

Zoom(縮放)

Python 數據科學入門1:Matplotlib

縮放按鈕可讓你單擊它,然後單擊並拖動出要放大的方形區域。 放大需要左鍵單擊並拖動。 你也可以右鍵單擊並拖動來縮小。

Configure Subplots(配置子圖)

Python 數據科學入門1:Matplotlib

此按鈕允許你對圖形和繪圖配置各種間距選項。 點擊它會彈出:

Python 數據科學入門1:Matplotlib

每個藍色條形都是一個滑塊,它允許你調整內邊距。 其中有些現在沒有任何效果,因為沒有任何其他子圖。 前四個值調整圖形到窗口邊緣的邊距。 之後wspace和hspace對應於當你繪製多個子圖時,它們的水平或豎直間距。

Save(保存)

Python 數據科學入門1:Matplotlib

此按鈕允許你以各種形式保存圖形。

所以這是 matplotlib 的快速介紹,我們之後會涉及更多。

第二章 圖例、標題和標籤

在本教程中,我們將討論 Matplotlib 中的圖例,標題和標籤。 很多時候,圖形可以不言自明,但是圖形帶有標題,軸域上的標籤和圖例,來解釋每一行是什麼非常必要。

注:軸域(Axes)即兩條座標軸圍城的區域。

從這裡開始:

<code>import matplotlib.pyplot as plt

x = [1,2,3]
y = [5,7,4]

x2 = [1,2,3]
y2 = [10,14,12]1234567/<code>

這樣我們可以畫出兩個線條,接下來:

<code>plt.plot(x, y, label='First Line')
plt.plot(x2, y2, label='Second Line')12/<code>

在這裡,我們繪製了我們已經看到的東西,但這次我們添加另一個參數label。 這允許我們為線條指定名稱,我們以後可以在圖例中顯示它。 我們的其餘代碼為:

<code>plt.xlabel('Plot Number')
plt.ylabel('Important var')
plt.title('Interesting Graph\\nCheck it out')
plt.legend()
plt.show()12345/<code>

使用plt.xlabel和plt.ylabel,我們可以為這些相應的軸創建標籤。 接下來,我們可以使用plt.title創建圖的標題,然後我們可以使用plt.legend()生成默認圖例。 結果圖如下:

Python 數據科學入門1:Matplotlib

第三章 條形圖和直方圖

這個教程中我們會涉及條形圖和直方圖。我們先來看條形圖:

<code>import matplotlib.pyplot as plt

plt.bar([1,3,5,7,9],[5,2,7,8,2], label="Example one")

plt.bar([2,4,6,8,10],[8,6,2,5,6], label="Example two", color='g')
plt.legend()
plt.xlabel('bar number')
plt.ylabel('bar height')

plt.title('Epic Graph\\nAnother Line! Whoa')

plt.show()123456789101112/<code>

plt.bar為我們創建條形圖。 如果你沒有明確選擇一種顏色,那麼雖然做了多個圖,所有的條看起來會一樣。 這讓我們有機會使用一個新的 Matplotlib 自定義選項。 你可以在任何類型的繪圖中使用顏色,例如g為綠色,b為藍色,r為紅色,等等。 你還可以使用十六進制顏色代碼,如#191970。

Python 數據科學入門1:Matplotlib

接下來,我們會講解直方圖。 直方圖非常像條形圖,傾向於通過將區段組合在一起來顯示分佈。 這個例子可能是年齡的分組,或測試的分數。 我們並不是顯示每一組的年齡,而是按照 20 ~ 25,25 ~ 30… 等等來顯示年齡。 這裡有一個例子:

<code>import matplotlib.pyplot as plt

population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48]

bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130]

plt.hist(population_ages, bins, histtype='bar', rwidth=0.8)

plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\\nCheck it out')
plt.legend()
plt.show()12345678910111213/<code>

產生的圖表為:

Python 數據科學入門1:Matplotlib

對於plt.hist,你首先需要放入所有的值,然後指定放入哪個桶或容器。 在我們的例子中,我們繪製了一堆年齡,並希望以 10 年的增量來顯示它們。 我們將條形的寬度設為 0.8,但是如果你想讓條形變寬,或者變窄,你可以選擇其他的寬度。

第四章 散點圖

接下來,我們將介紹散點圖。散點圖通常用於比較兩個變量來尋找相關性或分組,如果你在 3 維繪製則是 3 個。

散點圖的一些示例代碼:

<code>import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,4,5,2]

plt.scatter(x,y, label='skitscat', color='k', s=25, marker="o")

plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\\nCheck it out')
plt.legend()
plt.show()123456789101112/<code>

結果為:

Python 數據科學入門1:Matplotlib

plt.scatter不僅允許我們繪製x和y,而且還可以讓我們決定所使用的標記顏色,大小和類型。 有一堆標記選項,請參閱 Matplotlib 標記文檔中的所有選項。

第五章 堆疊圖

在這篇 Matplotlib 數據可視化教程中,我們要介紹如何創建堆疊圖。 堆疊圖用於顯示『部分對整體』隨時間的關係。 堆疊圖基本上類似於餅圖,只是隨時間而變化。

讓我們考慮一個情況,我們一天有 24 小時,我們想看看我們如何花費時間。 我們將我們的活動分為:睡覺,吃飯,工作和玩耍。

我們假設我們要在 5 天的時間內跟蹤它,因此我們的初始數據將如下所示:

<code>import matplotlib.pyplot as plt

days = [1,2,3,4,5]

sleeping = [7,8,6,11,7]
eating = [2,3,4,3,2]
working = [7,8,7,2,2]
playing = [8,5,7,8,13]12345678/<code>

因此,我們的x軸將包括day變量,即 1, 2, 3, 4 和 5。然後,日期的各個成分保存在它們各自的活動中。 像這樣繪製它們:

<code>plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k']) 


plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\\nCheck it out')
plt.show()123456/<code>
Python 數據科學入門1:Matplotlib

在這裡,我們可以至少在顏色上看到,我們如何花費我們的時間。 問題是,如果不回頭看代碼,我們不知道什麼顏色是什麼。 下一個問題是,對於多邊形來說,我們實際上不能為數據添加『標籤』。 因此,在任何不止是線條,帶有像這樣的填充或堆疊圖的地方,我們不能以固有方式標記出特定的部分。 這不應該阻止程序員。 我們可以解決這個問題:

<code>import matplotlib.pyplot as plt

days = [1,2,3,4,5]

sleeping = [7,8,6,11,7]
eating = [2,3,4,3,2]
working = [7,8,7,2,2]
playing = [8,5,7,8,13]


plt.plot([],[],color='m', label='Sleeping', linewidth=5)
plt.plot([],[],color='c', label='Eating', linewidth=5)
plt.plot([],[],color='r', label='Working', linewidth=5)
plt.plot([],[],color='k', label='Playing', linewidth=5)

plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k'])

plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\\nCheck it out')
plt.legend()
plt.show()12345678910111213141516171819202122/<code>
Python 數據科學入門1:Matplotlib

我們在這裡做的是畫一些空行,給予它們符合我們的堆疊圖的相同顏色,和正確標籤。 我們還使它們線寬為 5,使線條在圖例中顯得較寬。 現在,我們可以很容易地看到,我們如何花費我們的時間。

第六章 餅圖

餅圖很像堆疊圖,只是它們位於某個時間點。 通常,餅圖用於顯示部分對於整體的情況,通常以%為單位。 幸運的是,Matplotlib 會處理切片大小以及一切事情,我們只需要提供數值。

<code>import matplotlib.pyplot as plt

slices = [7,2,2,13]
activities = ['sleeping','eating','working','playing']
cols = ['c','m','r','b']

plt.pie(slices,
labels=activities,
colors=cols,
startangle=90,
shadow= True,
explode=(0,0.1,0,0),
autopct='%1.1f%%')

plt.title('Interesting Graph\\nCheck it out')
plt.show()12345678910111213141516/<code>
Python 數據科學入門1:Matplotlib

在plt.pie中,我們需要指定『切片』,這是每個部分的相對大小。 然後,我們指定相應切片的顏色列表。 接下來,我們可以選擇指定圖形的『起始角度』。 這使你可以在任何地方開始繪圖。 在我們的例子中,我們為餅圖選擇了 90 度角,這意味著第一個部分是一個豎直線條。 接下來,我們可以選擇給繪圖添加一個字符大小的陰影,然後我們甚至可以使用explode拉出一個切片。

我們總共有四個切片,所以對於explode,如果我們不想拉出任何切片,我們傳入0,0,0,0。 如果我們想要拉出第一個切片,我們傳入0.1,0,0,0。

最後,我們使用autopct,選擇將百分比放置到圖表上面。


分享到:


相關文章: