1. 程式人生 > >Matplotlib學習---用seaborn畫矩陣圖(pair plot)

Matplotlib學習---用seaborn畫矩陣圖(pair plot)

info style spa href htm learn 官網 5.0 html

矩陣圖非常有用,人們經常用它來查看多個變量之間的聯系。

下面用著名的鳶尾花數據來畫一個矩陣圖。從sklearn導入鳶尾花數據,然後將其轉換成pandas的DataFrame類型,最後用seaborn畫圖。(seaborn包裏也有這個數據,也可以直接從seaborn包導入此數據)

矩陣圖: sns.pairplot(data,hue=...) --- hue為data裏的數據,用其來顯示不同顏色

由於data需要的格式為每列是變量(在這裏是鳶尾花的四個特征),每行則是各變量的觀測數據,因此需要將從sklearn導入的初始數據轉換格式。 數據轉換好之後應如下所示(此處只截取部分):

     sepal_length  sepal_width  petal_length  petal_width    species
0             5.1          3.5           1.4          0.2     setosa
1             4.9          3.0           1.4          0.2     setosa
2             4.7          3.2           1.3          0.2     setosa
3             4.6          3.1           1.5          0.2     setosa
4 5.0 3.6 1.4 0.2 setosa 5 5.4 3.9 1.7 0.4 setosa 6 4.6 3.4 1.4 0.3 setosa .. ... ... ... ... ... 120 6.9 3.2 5.7 2.3 virginica
121 5.6 2.8 4.9 2.0 virginica 122 7.7 2.8 6.7 2.0 virginica 123 6.3 2.7 4.9 1.8 virginica

完整代碼如下:

import pandas as pd
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
import seaborn as sns
iris=load_iris()

d=pd.DataFrame(iris.data,columns=["sepal_length","sepal_width","petal_length","petal_width"])
d["species"]=iris.target #增加一列,為鳶尾花的類別

d.loc[d["species"]==0,"species"]="setosa" #把類別這一列數值為0的替換為setosa
d.loc[d["species"]==1,"species"]="versicolor" #把類別這一列數值為1的替換為versicolor
d.loc[d["species"]==2,"species"]="virginica" #把類別這一列數值為2的替換為virginica

sns.pairplot(d,hue="species")

plt.show()

圖像如下:

技術分享圖片

看第三行第四列的這幅圖,可以看到petal_length和petal_width呈很強的正比關系。

seaborn官網上有更完整的示例,有興趣可以查看:http://seaborn.pydata.org/generated/seaborn.pairplot.html。

Matplotlib學習---用seaborn畫矩陣圖(pair plot)