1.用seaborn的distplot()函數繪制直方圖。參數kde = True時會把分布曲線也畫出來。
如下代碼所示是繪制標准正態分布的分布圖
1 import seaborn as sns 2 import numpy as np 3 import matplotlib as mpl 4 import matplotlib.pyplot as plt 5 6 7 x = np.random.normal(size=1000) 8 sns.distplot(x) 9 plt.show()
2.對於兩組變量關系,可以用散點圖畫出他們的分布。函數是jointplot()。
如下代碼是繪出二維正態分布的散點圖
1 import seaborn as sns 2 import numpy as np 3 import pandas as pd 4 import matplotlib as mpl 5 import matplotlib.pyplot as plt 6 7 8 data = np.random.multivariate_normal(mean=[0, 0], cov=[[1, 0], [0, 1]], size=1000) #1000組標准二維正態分布 9 df = pd.DataFrame(data=data, columns=["x", "y"]) 10 sns.jointplot(x="x", y="y", kind="hex", data=df) 11 plt.show()
data是一個長度為1000的ndarray類型,每個元素又是一個二維向量,分別是二維正態分布的兩個隨機變量的樣本值。所以可以當成是1000*2的矩陣
利用DataFrame函數將ndarray變成DataFrame結構,然后利用jointplot()畫出散點圖。其中如果kind=“scatter”則是普通散點圖,這里為了避免樣本太多,普通的散點圖可能連成一片看不出分布差異,
用kind=“hex"來畫,運行結果如下
3.最強大的函數應該是pairplot函數,它能對DataFram的屬性兩兩配對繪制散點圖,並且對某一屬性繪制直方圖
如下代碼所示,iris是seaborn內置數據集
1 import seaborn as sns 2 import numpy as np 3 import pandas as pd 4 import matplotlib as mpl 5 import matplotlib.pyplot as plt 6 7 iris = sns.load_dataset("iris") #seaborn內置數據集,DaraFram類型 8 sns.pairplot(iris, kind="hex") 9 plt.show()
運行結果如下