由於這是一個Python語言的軟體包,因此需要你的機器上首先安裝好Python語言的環境。關於這一點,請自行在網路上搜索獲取方法。
關於如何安裝Matplotlib請參見這裡:Matplotlib Installing。
筆者推薦大家通過pip的方式進行安裝,具體方法如下:
sudo pip3 install matplotlib
本文中的源碼和測試數據可以在這裡獲取:matplotlib_tutorial
本文的代碼示例會用到另外一個Python庫:NumPy。建議讀者先對NumPy有一定的熟悉,我之前也寫過一個NumPy的基礎教程,參見這裡:Python 機器學習庫 NumPy 教程。
本文的代碼在如下環境中測試:
Matplotlib適用於各種環境,包括:
使用Matplotlib,能夠的輕易生成各種類型的圖像,例如:直方圖,波譜圖,條形圖,散點圖等。並且,可以非常輕鬆的實現定製。
下面我們先看一個最簡單的代碼示例,讓我們感受一下Matplotlib是什麼樣的:
# test.py
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100, 201)
plt.plot(data)
plt.show()
這段代碼的主體邏輯只有三行,但是它卻繪製出了一個非常直觀的線性圖,如下所示:
對照著這個線形圖,我們來講解一下三行代碼的邏輯:
np.arange(100, 201)
matplotlib.pyplot
這段代碼非常的簡單,運行起來也是一樣。如果你已經有了本文的運行環境,將上面的代碼保存到一個文本文件中(或者通過Github獲取本文的源碼),然後通過下面的命令就可以在你自己的電腦上看到上面的圖形了:
python3 test.py
注1:後面的教程中,我們會逐步講解如何定製圖中的每一個細節。例如:坐標軸,圖形,著色,線條樣式,等等。注2:如果沒有必要,下文的截圖會去掉圖形外側的邊框,只保留圖形主體。
注1:後面的教程中,我們會逐步講解如何定製圖中的每一個細節。例如:坐標軸,圖形,著色,線條樣式,等等。
有些時候,我們可能希望一次繪製多個圖形,例如:兩組數據的對比,或者一組數據的不同展示方式等。
可以通過下面的方法創建多個圖形:
可以簡單的理解為一個figure就是一個圖形窗口。matplotlib.pyplot會有一個默認的figure,我們也可以通過plt.figure()創建更多個。如下面的代碼所示:
figure
plt.figure()
# figure.py
data2 = np.arange(200, 301)
plt.plot(data2)
這段代碼繪製了兩個窗口的圖形,它們各自是一個不同區間的線形圖,如下所示:
註:初始狀態這兩個窗口是完全重合的。
有些情況下,我們是希望在同一個窗口顯示多個圖形。此時就這可以用多個subplot。下面是一段代碼示例:
# subplot.py
plt.subplot(2, 1, 1)
plt.subplot(2, 1, 2)
這段代碼中,除了subplot函數之外都是我們熟悉的內容。subplot函數的前兩個參數指定了subplot數量,即:它們是以矩陣的形式來分割當前圖形,兩個整數分別指定了矩陣的行數和列數。而第三個參數是指矩陣中的索引。
subplot
因此,下面這行代碼指的是:2行1列subplot中的第1個subplot。
下面這行代碼指的是:2行1列subplot中的第2個subplot。
所以這段代碼的結果是這個樣子:
subplot函數的參數不僅僅支持上面這種形式,還可以將三個整數(10之內的)合併一個整數。例如:2, 1, 1可以寫成211,2, 1, 2可以寫成212。
2, 1, 1
211
2, 1, 2
212
因此,下面這段代碼的結果是一樣的:
plt.subplot(211)
plt.subplot(212)
subplot函數的詳細說明參見這裡:matplotlib.pyplot.subplot
Matplotlib可以生成非常多的圖形式樣,多到令人驚嘆的地步。大家可以在這裡:Matplotlib Gallery 感受一下。
本文作為第一次的入門教程,我們先來看看最常用的一些圖形的繪製。
前面的例子中,線性圖的橫軸的點都是自動生成的,而我們很可能希望主動設置它。另外,線條我們可能也希望對其進行定製。看一下下面這個例子:
# plot.py
plt.plot([1, 2, 3], [3, 6, 9], -r)
plt.plot([1, 2, 3], [2, 4, 9], :g)
這段代碼可以讓我們得到這樣的圖形:
這段代碼說明如下:
plot
scatter函數用來繪製散點圖。同樣,這個函數也需要兩組配對的數據指定x和y軸的坐標。下面是一段代碼示例:
scatter
# scatter.py
N = 20
plt.scatter(np.random.rand(N) * 100,
np.random.rand(N) * 100,
c=r, s=100, alpha=0.5)
c=g, s=200, alpha=0.5)
c=b, s=300, alpha=0.5)
c
s
alpha
這段代碼繪製的圖形如下所示:
scatter函數的詳細說明參見這裡:matplotlib.pyplot.scatter
pie函數用來繪製餅狀圖。餅狀圖通常用來表達集合中各個部分的百分比。
pie
# pie.py
labels = [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
data = np.random.rand(7) * 100
plt.pie(data, labels=labels, autopct=%1.1f%%)
plt.axis(equal)
plt.legend()
data
labels
autopct
這段代碼輸出的圖形如下所示:
pie函數的詳細說明參見這裡:matplotlib.pyplot.pie
bar函數用來繪製條形圖。條形圖常常用來描述一組數據的對比情況,例如:一周七天,每天的城市車流量。
bar
下面是一個代碼示例:
# bar.py
N = 7
x = np.arange(N)
data = np.random.randint(low=0, high=100, size=N)
colors = np.random.rand(N * 3).reshape(N, -1)
plt.title("Weekday Data")
plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels)
np.random.rand(N * 3).reshape(N, -1)
title
bar函數的詳細說明參見這裡:matplotlib.pyplot.bar
hist函數用來繪製直方圖。直方圖看起來是條形圖有些類似。但它們的含義是不一樣的,直方圖描述了數據中某個範圍內數據出現的頻度。這麼說有些抽象,我們通過一個代碼示例來描述就好理解了:
hist
# hist.py
data = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
labels = [3K, 4K, 5K]
bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000]
plt.hist(data, bins=bins, label=labels)
上面這段代碼中,[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]生成了包含了三個數組的數組,這其中:
[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
bins數組用來指定我們顯示的直方圖的邊界,即:[0, 100) 會有一個數據點,[100, 500)會有一個數據點,以此類推。所以最終結果一共會顯示7個數據點。同樣的,我們指定了標籤和圖例。
這段代碼的輸出如下圖所示:
在這幅圖中,我們看到,三組數據在3000以下都有數據,並且頻度是差不多的。但藍色條只有3000以下的數據,橙色條只有4000以下的數據。這與我們的隨機數組數據剛好吻合。
hist函數的詳細說明參見這裡:matplotlib.pyplot.hist
通過本文,我們已經知道了Matplotlib的大致使用方法和幾種最基本的圖形的繪製方式。
需要說明的是,由於是入門教程,因此本文中我們只給出了這些函數和圖形最基本的使用方法。但實際上,它們的功能遠不止這麼簡單。因此本文中我們貼出了這些函數的API地址以便讀者進一步的研究。私信回復07獲取Python零基礎入門教程
推薦閱讀:
TAG:平台 | Python | 入門教程 |