Python資料圖形化—— matplotlib 基礎應用
matplotlib是python中常用的資料圖形化工具,用法跟matlab有點相似。呼叫簡單,功能強大。在Windows下可以通過命令列 pip install matplotlib 來進行安裝。
以下為一些基礎使用的例子:
1、繪製直線
先通過numpy生成在直線 y = 5 * x + 5 上的一組資料,然後將其繪製在圖表上
import numpy as np
import matplotlib.pyplot as plot
x = np.linspace(1, 10, 10)
y = 5 * x + 5
# plot.figure()
plot.plot(x, y)
plot.show()
執行上面的程式碼,結果如下:
2、繪製折線圖
繪製折線圖呼叫的matplotlib的方法一樣,只是使用numpy生成的資料不一樣。
import numpy as np
import matplotlib.pyplot as plot
x = np.linspace(1, 10, 10)
y = np.random.normal(1, 5, 10)
plot.figure()
plot.plot(x, y)
plot.show()
由於涉及到隨機數,每次執行的結果會不一樣。某次執行結果如下:
3、同時繪製多條樣式不一的曲線
plot方法可以同時繪製多條圖線,並支援不同的曲線採用不同的樣式和顏色來顯示。在下面的程式碼中,plot方法的引數,3個為一組,共3組,每一組的引數分別為 x軸座標、y軸座標和樣式。
樣式用法:
格式:
fmt = '[color][marker][line]'
樣式的第一個字母表示顏色,支援的顏色有:r(red)、g(green)、b(blue)、c(cyan)、m(megenta)、y(yellow)、w(white)、k(black)。
樣式的第二部分表示圖線的填充符號,可以寫:--(虛線)、+(加號)、^(向上的正三角形)、s(正方形)、o(圓形)等。還可以同時採用兩種填充方式,如‘ro--’表示用紅色的虛線及實心圓來同時進行填充。
import numpy as np
import matplotlib.pyplot as plot
x = np.linspace(-10, 10, 100)
plot.plot(x, 100 * x, 'r--', x, 10*x ** 2, 'g^', x, x ** 3, 'c+')
plot.show()
4、繪製散點圖
呼叫 scatter 方法可以繪製散點圖。
import numpy as np
import matplotlib.pyplot as plot
x = np.linspace(1, 10, 10)
y = np.linspace(1, 10, 10)
plot.scatter(x, y)
plot.ylabel('y value')
plot.xlabel('x scale')
plot.title('Scatter Figure')
plot.show()
輸出:
可以通過設定不同引數的形式獲得不同的散點圖:
import numpy as np
import matplotlib.pyplot as plot
# 固定隨機數的seed,使其每次執行產生的結果都一樣
np.random.seed(1)
num = 100
edgeRadius = 0.5
x = np.random.rand(num)
y = np.random.rand(num)
area = (200 * np.random.rand(num))
color = np.sqrt(area)
# 建立區域,用不同的樣式來顯示不同分割槽的點
triangleArea = np.ma.masked_where(x <= edgeRadius, area)
diamondArea = np.ma.masked_where(x > edgeRadius, area)
plot.scatter(x, y, s=triangleArea, marker='o', c=color)
plot.scatter(x, y, s=diamondArea, marker='d', c=color)
plot.title('Random Scatter')
plot.show()
5、繪製柱狀圖與多個圖形
在以下示例中, figure函式指定了圖表的編號和大小比例,suptitle設定標題,subplot指定當前繪圖的位置(引數221表示2x2共四個圖形區域,最後的1表示第一個圖形區域)。後面的bar、scatter、plot和pie函式分別繪製了柱狀圖、散點圖、折(直)線圖和餅圖。
import matplotlib.pyplot as plot
labels = ['A', 'B', 'C']
values = [1, 2, 3]
plot.figure(1, figsize=(9, 6))
plot.suptitle('Multiple Plots')
plot.subplot(221)
plot.bar(labels, values)
plot.subplot(222)
plot.scatter(labels, values)
plot.subplot(223)
plot.plot(labels, values)
plot.subplot(224)
plot.pie(values, labels=labels)
plot.show()