# seaborn 這個包是在matplotlib的基礎上封裝的一個繪圖工具包,支持numpy和pandas的統計結果可視化
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sn
# 可視化單一變量、二維變量,比較數據集中各變量的分佈情況
# 正態分佈、高斯分佈
# loc 概率分佈均值 scale 標準差 size樣本個數
x1 = np.random.normal(loc=0, scale=1, size=1000)
# bins 直方圖 柱子的個數
# kde 是否顯示核密度估計圖,默認顯示,設置False不顯示
sn.distplot(x1, bins=100, kde=False)
# rug 默認爲False不顯示,設置爲True 顯示觀測的小細條(邊際毛毯)
sn.distplot(x1, bins=20, kde=False, rug=True)
# 核密度估計圖
# hist 設置爲False 不會顯示條形圖
sn.distplot(x1, hist=True, bins=20, kde=True, rug=True)
x2 = np.random.randint(0, 100, 500)
# 直方圖+核密度估計圖
sn.distplot(x2)
# 直方圖+邊際小細條
sn.distplot(x2, bins=20, kde=False, rug=True)
# 核密度估計圖 + 邊際小細條
sn.distplot(x2, hist=False, kde=True, rug=True)
# 核密度估計圖
# shade 將範圍內進行填充
sn.kdeplot(x2,shade=True)
sn.rugplot(x2)
df_obj1 = pd.DataFrame({
'x':np.random.randn(500),
'y':np.random.randn(500)
})
df_obj2 = pd.DataFrame({
'x':np.random.randn(500),
'y':np.random.randint(0,100,500)
})
# 散點圖
sn.jointplot(x='x', y='y', data=df_obj1)
# 二維直方圖
# kind 圖的類型
sn.jointplot(x='x', y='y', data=df_obj1, kind='hex')
# 二維核密度估計圖
sn.jointplot(x='x',y='y',data=df_obj1,kind='kde')
# 數據集中的變量間的關係可視化圖
dataset = sn.load_dataset('tips')
sn.pairplot(dataset)
# 類別數據可視化
exercise = sn.load_dataset('exercise')
# 類別散佈圖
sn.stripplot(x='diet',y='pulse',data=exercise)
# 帶圖例
sn.swarmplot(x='diet',y='pulse',data=exercise,hue='kind')
# 盒子圖
sn.boxplot(x='diet',y='pulse',data=exercise,hue='kind')
# 小提琴圖
sn.violinplot(x='diet',y='pulse',data=exercise,hue='kind')
# 柱狀圖
sn.barplot(x='diet',y='pulse',data=exercise,hue='kind')
# 點圖
sn.pointplot(x='diet',y='pulse',data=exercise,hue='kind')
# labels= 範圍對應的標籤
plt.pie(pd.Series(np.random.randint(5000,10000,3)),labels=['M','F','T'],autopct='%.1f%%')
# 將圖表保存到本地
plt.savefig('test.png')
plt.show()