數(shù)學(xué)建?!獢?shù)據(jù)可視化seaborn
寫(xiě)作由來(lái):
最近在準(zhǔn)備數(shù)學(xué)建模美賽,在畫(huà)圖表的時(shí)候,之前一直用的是matplotlib,但是畫(huà)出來(lái)總感覺(jué)不是很好看,而美賽挺注重文章的美觀,所以找到了另一個(gè)實(shí)用的高級(jí)的Python包——seaborn。
概括
風(fēng)格(style)
有5種風(fēng)格 white,whitegrid,dark,darkgrid,ticks,默認(rèn)是darkgrid
sns.set()
sns.set(style="ticks")
坐標(biāo)軸出現(xiàn)刻度線
環(huán)境(context)
sns.plotting_context("notebook") # 默認(rèn)
sns.plotting_context("paper")
sns.plotting_context("talk")
sns.plotting_context("poster")
##字體大小和線的粗細(xì)
sns.set_context("paper",font_scale=2,rc={"lines.linewidth":3.5})
plt.figure(figsize=(10,6)) ##表的大小
畫(huà)圖就是參數(shù)很多,列舉一些下面用到常用的
-
hue:也是具體的某一可以用做分類(lèi)的列,作用是分類(lèi);
-
palette:調(diào)色板
-
markers:繪圖的形狀
-
x_jitter,y_jitter:設(shè)置點(diǎn)的抖動(dòng)程度
Categorical plots(分類(lèi)圖)
- Categorical scatterplots(分類(lèi)散點(diǎn)圖)
stripplot(分布散點(diǎn)圖)
swarmplot(分布密度散點(diǎn)圖) - Categorical distribution plots(分類(lèi)分布圖)
boxplot(箱線圖)
violinplot(小提琴圖) - Categorical estimate plots(分類(lèi)估計(jì)圖)
pointplot(點(diǎn)圖)
barplot(條形圖)
countplot(計(jì)數(shù)統(tǒng)計(jì)圖)
##默認(rèn)提供的顏色
current_palette = sns.color_palette()
sns.palplot(current_palette)
當(dāng)我們畫(huà)12條線的時(shí)候,有兩條顏色是相同的,因?yàn)樗J(rèn)提供10種顏色
這時(shí)最簡(jiǎn)單的方法就是在一個(gè)圓形的顏色空間中畫(huà)出均勻間隔的顏色
sns.palplot(sns.color_palette("hls",12))
連續(xù)畫(huà)板
sns.palplot(sns.light_palette("purple"))
sns.palplot(sns.dark_palette("yellow"))
回歸
回歸regplot和implot,推薦用regplot,implot更高級(jí),參數(shù)更多
sns.regplot(x='total_bill',y='tip',data=tips)
多變量分析
sns.stripplot(x="day",y="total_bill",data=tips,jitter=False)
jitter參數(shù)默認(rèn)是true,即左右小范圍偏差
##上面那個(gè)左右誤差的不太均勻,那下面的這個(gè)圖就左右比較均勻
##長(zhǎng)的像樹(shù)
sns.swarmplot(x="day",y="total_bill",data=tips)
- hue是data中的鍵或向量,根據(jù)hue變量對(duì)數(shù)據(jù)進(jìn)行分組,并在圖中使用不同顏色的元素加以區(qū)分。
sns.swarmplot(x="day",y="total_bill",hue="sex",data=tips)
小提琴
sns.violinplot(x="day",y="total_bill",hue="sex",data=tips)
sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,split=True)
點(diǎn)圖pointplot
更好的描述變化差異
sns.pointplot(x="class",y="survived",hue="sex",data=titanic,palette={"male":"g","female":"m"},
markers=["^","o"],linestyles=["-","--"]
)
柱狀圖barplot
sns.barplot(x="sex",y="survived",hue="class",data=titanic)
displot
熱度圖
實(shí)戰(zhàn)(tips數(shù)據(jù)集)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context("paper",font_scale=2,rc={"lines.linewidth":3.5})
tips = sns.load_dataset("tips",data_home="D:\JJH\Documents\seaborn-data-master\seaborn-data-master")
查看tip的分布情況
sns.displot(data=tips,x="tip")
核密度估計(jì)
sns.displot(data=tips,x="tip",kind="kde")
在直方圖中,顯示核密度估計(jì)
sns.displot(data=tips,x="tip",kde=True)
在分布圖中區(qū)分男女
通過(guò)hue參數(shù)
sns.displot(data=tips,x="tip",kind="kde",hue="sex")
為了更加美觀可以設(shè)置multiple,默認(rèn)是layer
multiple有三個(gè)參數(shù)分別是layer,stack,fill
sns.displot(data=tips,x="tip",hue="sex",kind="kde",multiple="stack")
二元分布圖
sns.displot(data=tips,x="tip",y="total_bill")
另一種二元分布圖
sns.displot(data=tips,x="tip",y="total_bill",kind="kde")
col參數(shù),繪制分圖
sns.displot(data=tips,x="tip",kind="kde",col="sex")
jointplot
即可以查看二元變量的分布情況
g=sns.jointplot(x="total_bill",y="tip",data=tips)
六邊形
g=sns.jointplot(x="total_bill",y="tip",data=tips,kind="hex")
pairplot
查看所有變量(數(shù)值型)之間的關(guān)系
sns.pairplot(tips,
kind = 'scatter', #散點(diǎn)圖/回歸分布圖{'scatter', 'reg'})
diag_kind = 'hist', #直方圖/密度圖{'hist', 'kde'}
hue = 'time', #按照某一字段進(jìn)行分類(lèi)
palette = 'husl', #設(shè)置調(diào)色板
markers = ['o', 's'], #設(shè)置不同系列的點(diǎn)樣式(這里根據(jù)參考分類(lèi)個(gè)數(shù))
)
熱度圖 相關(guān)系數(shù)
因?yàn)橛行┎皇菙?shù)值型的,相關(guān)系數(shù)是沒(méi)法計(jì)算的,所以要轉(zhuǎn)化為int文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644523.html
for field in ["sex","day","time","smoker"]:
tips[field]=tips[field].astype("category").cat.codes
sns.heatmap(tips.corr(),annot=True,fmt='.2f',cmap="coolwarm")
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644523.html
到了這里,關(guān)于數(shù)學(xué)建?!獢?shù)據(jù)可視化seaborn的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!