Seaborn库简介

酥酥 发布于 2022-06-03 1157 次阅读


Seaborn的api非常友好而且完美兼容pandas数据

				
					sns.set()
sinplot()#使用seaborn风格
				
			

五种主题风格

				
					darkgrid,whitegrid,dark,white,ticks
sns.setstyle['风格']
sns.boxplot(data=.)
sns.despine(offset=)#https://seaborn.pydata.org/generated/seaborn.despine.html?highlight=despine#seaborn.despine

#with sns.set_style(""):
	风格1
..风格2

sns.set_context()#指定格子大小
				
			
调色板
				
					颜色很重要
color_palette()能传入任何Matplotlib所支持的颜色
color_palette()不写参数则默认颜色
set_palette()设置所有图的颜色

current_palette=sns.color_palette()
sns.palplot(current_palette)#默认颜色版
sns.palplot(sns.color_palette("hls",8))#把圆盘分成n份
sns.palplot(sns.color_palette("Paired",8))#把深浅色作为一对分成n份
sns.boxplot(data,palette=sns.color_palette("hls",n))
sns.palplot(sns.hls_palette(8,l,s))#l亮度--s饱和度sns.boxplot(data,palette=sns.hls_palette(8,l,s))


#xkcd颜色 产生了954个可以随时通过xkcd_rgb字典中调用的命名颜色
sns.xkcd_rgb["medium green"]
colors=["green","red"]
sns.palplot(sns.xkcd_palette(colors))

#单颜色由浅到深
sns.palplot(sns.color_palette("Blues",9))
#深到浅
sns.palplot(sns.color_palette("Blues_r",9))
#cubehelix
sns.palplot(sns.cubehelix_palette(8,start=.5,rot=-.75))# https://seaborn.pydata.org/generated/seaborn.cubehelix_palette.html?highlight=cubehelix#seaborn.cubehelix_palette

sns.palplot(sns.light_palette(color=))
sns.palplot(sns.dark_palette(color=))# 
				
			
单变量分析
				
					import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import seaborn as sns
from scipy import stats,integrate
import numpy as np
				
			
				
					x=np.random.normal(size=100)
sns.distplot(x,kde=False,bins=50,fit=stats.gamma)#查看统计指标下分布状况
				
			
均值协方差图
				
					mean,cov=[0,1],[(1,.5),(.5,1)]
data=np.random.multivariate_normal(mean,cov,200)
import pandas as pd
df=pd.DataFrame(data,columns=['A','B'])
df.head()
				
			
 AB
00.6026801.608229
1-1.1147110.097490
20.247072-0.914582
30.7579101.290371
4-0.5546190.703283
				
					ax[0]=sns.jointplot(x='A',y='B',data=df,kind="kde");
####ax[0].annotate(stats.pearsonr)
iris=sns.load_dataset("iris")
###r, p = stats.pearsonr(x, y),label放入
ax[1]=sns.pairplot(iris)#对角线是单变量的分布图,不是对角线的情况是双变量散点图
				
			
				
					import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import seaborn as sns
from scipy import stats,integrate
import numpy as np
import pandas as pd
tips=sns.load_dataset("tips")
tips.head()
sns.regplot(x="total_bill",y="tip",data=tips)#implot也可以,x_jitter=0.05小抖动离散值变常用
				
			
				
					import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import seaborn as sns
from scipy import stats,integrate
import numpy as np
import pandas as pd
iris=sns.load_dataset("iris")
titanic=sns.load_dataset("titanic")
tips=sns.load_dataset("tips")
ax1=plt.subplot2grid((2,2),loc=(0,0))
ax1=sns.stripplot(x="day",y="total_bill",data=tips)
ax2=plt.subplot2grid((2,2),loc=(0,1))
ax2=sns.swarmplot(x="day",y="total_bill",hue="sex",data=tips)
ax3=plt.subplot2grid((2,2),loc=(1,0))
ax3=sns.boxplot(x="day",y="total_bill",hue="time",data=tips,palette=sns.color_palette("hls",4))
ax4=plt.subplot2grid((2,2),loc=(1,1))
ax4=sns.violinplot(x="day",y="total_bill",hue="time",data=tips,palette=sns.color_palette("hls",4),split=True)
fig=plt.figure()
ax5=fig.add_subplot(211)
ax5=sns.barplot(x="sex",y="survived",hue="class",data=titanic)
ax6=fig.add_subplot(212)
ax6=sns.pointplot(x="class",y="survived",hue="sex",data=titanic,palette=\
                {"male":"g","female":"m"},markers=["^","o"],linestyles=\
                  ["-","--"])
ax7=sns.factorplot(x="day",y="total_bill",hue="smoker",col="time",data=tips,kind="swarm",sharey=False)
				
			
				
					import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import seaborn as sns
from scipy import stats,integrate
import numpy as np
import pandas as pd
iris=sns.load_dataset("iris")
titanic=sns.load_dataset("titanic")
tips=sns.load_dataset("tips")
g=sns.FacetGrid(tips,col="time")#row也可以指定一个维度
g.map(plt.scatter,"sex","tip")
g.add_legend()
#g.set()
#g.fig.subplots_adjust(wspace,hspace)#子图间隔设置
k=sns.PairGrid(iris,hue="species",)#vars指定n个变量只画n个变量的图n*n个图
k.map_diag(plt.hist)#对角线上
k.map_offdiag(plt.scatter)#非对角线上
				
			

heatmap!!!

				
					import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import seaborn as sns
from scipy import stats,integrate
import numpy as np
import pandas as pd
uniform_data=np.random.rand(3,3)
print(uniform_data)
heatmap=sns.heatmap(uniform_data)#vmin,vmax,cmap,center=设置中心
dataset=sns.load_dataset("flights")
data=dataset.pivot("month","year","passengers")
ax=sns.heatmap(data,annot=True,fmt="d",linewidths=.3)