1. 線性關系數據可視化
lmplot( )
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline sns.set_style("darkgrid") sns.set_context("paper") # 設置風格、尺度 import warnings warnings.filterwarnings('ignore') # 不發出警告
# 基本用法 tips = sns.load_dataset("tips") print(tips.head()) # 加載數據 sns.lmplot(x="total_bill", y="tip", hue = 'smoker',data=tips,palette="Set1", ci = 70, # 誤差值 size = 5, # 圖表大小 markers = ['+','o'], # 點樣式 )
# 拆分多個表格 sns.lmplot(x="total_bill", y="tip", col="smoker", data=tips)
# 多圖表1 sns.lmplot(x="size", y="total_bill", hue="day", col="day",data=tips, aspect=0.6, # 長寬比 x_jitter=.30, # 給x或者y軸隨機增加噪音點 col_wrap=4, # 每行的列數 )
# 多圖表2 sns.lmplot(x="total_bill", y="tip", row="sex", col="time",data=tips, size=4) # 行為sex字段,列為time字段 # x軸total_bill, y軸tip
# 非線性回歸 sns.lmplot(x="total_bill", y="tip",data=tips, order = 2) #可以做更高階的回歸;2就是按照2次方做回歸;
2. 時間線圖表
sns. tsplot( )
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline sns.set_style("darkgrid") sns.set_context("paper") # 設置風格、尺度 import warnings warnings.filterwarnings('ignore') # 不發出警告
# 1、時間線圖表 - tsplot() # 簡單示例 x = np.linspace(0, 15, 31) data = np.sin(x) + np.random.rand(10, 31) + np.random.randn(10, 1) print(data.shape) print(pd.DataFrame(data).head()) #每一行數據是一個變量,31列是代表有31天或31種情況下的觀測值。 # 創建數 sns.tsplot(data=data, err_style="ci_band", # 誤差數據風格,可選:ci_band, ci_bars, boot_traces, boot_kde, unit_traces, unit_points interpolate=True, # 是否連線 ci = [40,70,90], # 設置誤差 置信區間 color = 'g' # 設置顏色 )
一個變量里邊有10個變量,每個變量里邊有31個觀測值
10個變量,做了一個均值的估計,其他31個維度代表它的變化程度。
# 1、時間線圖表 - tsplot() # 簡單示例 sns.tsplot(data=data, err_style="boot_traces", n_boot=300 # 迭代次數,就是有多少個線; )
# 1、時間線圖表 - tsplot() # 參數設置 gammas = sns.load_dataset("gammas") print(gammas.head()) print('數據量為:%i條' % len(gammas)) print('timepoint為0.0時的數據量為:%i條' % len(gammas[gammas['timepoint'] == 0])) print('timepoint共有%i個唯一值' % len(gammas['timepoint'].value_counts())) # print(gammas['timepoint'].value_counts()) # 查看唯一值具體信息 # 導入數據 sns.tsplot(time="timepoint", # 時間數據,x軸 value="BOLD signal", # y軸value unit="subject", # condition="ROI", # 分類 data=gammas) # gammas[['ROI', 'subject']]
3.熱圖
sns.heatmap()
# 2、熱圖 - heatmap() # 簡單示例 df = pd.DataFrame(np.random.rand(10,12)) # 創建數據 - 10*12圖表 sns.heatmap(df, # 加載數據 vmin=0, vmax=1 # 設置圖例最大最小值 )
# 2、熱圖 - heatmap() # 參數設置 flights = sns.load_dataset("flights") flights = flights.pivot("month", "year", "passengers") print(flights.head()) # 加載數據 sns.heatmap(flights, annot = True, # 是否顯示數值 fmt = 'd', # 格式化字符串 linewidths = 0.2, # 格子邊線寬度 #center = 100, # 調色盤的色彩中心值,若沒有指定,則以cmap為主 #cmap = 'Reds', # 設置調色盤 cbar = True, # 是否顯示圖例色帶 #cbar_kws={"orientation": "horizontal"}, # 是否橫向顯示圖例色帶 #square = True, # 是否正方形顯示圖表 ) flights.head()
# 2、熱圖 - heatmap() 繪制半邊熱圖 sns.set(style="white") # 設置風格 rs = np.random.RandomState(33) d = pd.DataFrame(rs.normal(size=(100, 26))) corr = d.corr() #26*26的一個正方數據; # 求解相關性矩陣表格 # 創建數據 mask = np.zeros_like(corr, dtype=np.bool) mask[np.triu_indices_from(mask)] = True # 設置一個“上三角形”蒙版 cmap = sns.diverging_palette(220, 10, as_cmap=True) # 設置調色盤 sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0, square=True, linewidths=0.2) # 生成半邊熱圖