seaborn是python中的一个很是强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,若是遇到疑惑的地方能够到官网查看。http://seaborn.pydata.org/
从官网的主页咱们就能够看出,seaborn在数据可视化上真的很是强大。python
1.首先咱们仍是须要先引入库,不过此次要用到的python库比较多。dom
import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns
2.sns.set_style()
:不传入参数用的就是seaborn默认的主题风格,里面的参数共有五种函数
我比较习惯用whitegrid。 spa
3.下面说一下seaborn里面的调色板,咱们能够用sns.color_palette()
获取到这些颜色,而后用sns.palplot()
将这些色块打印出来。color_palette()函数还能够传入一些参数设计
sns.palplot(sns.color_palette("hls",n))#显示出n个不一样颜色的色块 sns.palplot(sns.color_palette("Paired",2n))#显示出2n个不一样颜色的色块,且这些颜色两两之间是相近的 sns.palplot(sns.color_palette("color"))#由浅入深显示出同一颜色的色块 sns.palplot(sns.color_palette("color_r"))##由深刻浅显示出同一颜色的色块 sns.palplot(sns.color_palette("cubehelix",n))#显示出n个颜色呈线性变化的色块 sns.palplot(sns.cubehelix_palette(k,start=m,rot=n))#显示出k个start(0,3)为m,rot(-1,1)为n的呈线性变化的色块 sns.palplot(sns.light_palette("color"))#将一种颜色由浅到深显示 sns.palplot(sns.dark_palette("color"))#将一种颜色由深到浅显示 sns.palplot(sns.dark_palette("color",reverse=bool))#reverse的值为False,则将一种颜色由深到浅显示;若为True,则将一种颜色由浅到深显示
4.sns.kdeplot(x,y,cmap=pal)
:绘制核密度分布图。
5.sns.distplot(x,kde=bool,bins=n)
:kde表明是否进行核密度估计,也就是是否绘制包络线,bins指定绘制的条形数目。
6.根据均值和协方差绘图:code
首先咱们要根据均值和协方差获取数据orm
mean,cov = [m,n],[(a,b),(c,d)]#指定均值和协方差 data = np.random.multivariate_normal(mean,cov,e)#根据均值和协方差获取e个随机数据 df = pd.DataFrame(data,columns=["x","y"])#将数据指定为DataFrame格式 df
而后绘制图像排序
sns.jointplot(x="x",y="y",data=df) #绘制散点图
用sns.jointplot(x="x",y="y",data=df)
能够绘制出x和y单变量的条形图以及x与y多变量的散点图。图片
7.在jointplot()函数中传入kind=“hex”,可以在数据量比较大时让咱们更清晰地看到数据的分布比重。ip
x,y = np.random.multivariate_normal(mean,cov,2000).T with sns.axes_style("white"): sns.jointplot(x=x,y=y,kind="hex",color="c")
绘制出的图像以下
8.sns.pairplot(df)
:绘制出各变量之间的散点图与条形图,且对角线均为条形图。
在这里咱们能够先使用df = sns.load_dataset("")
将seaborn中本来带有的数据读入或用pandas读取。
9.绘制回归分析图:这里能够用两个函数regplot()
和lmplot()
,用regplot()更好一些。
若是两个变量不适合作回归分析,咱们能够传入x_jitter()
或y_jitter()
让x轴或y轴的数据轻微抖动一些,得出较为准确的结果。
10.sns.stripplot(x="",y="",data=df,jitter=bool)
:绘制一个特征变量中的多个变量与另外一变量关系的散点图,jitter控制数据是否抖动。
11.sns.swarmplot(x="",y="",hue="",data=df)
:绘制页状散点图,hue指定对数据的分类,因为在大量数据下,上面的散点图会影响到咱们对数据的观察,这种图可以更清晰地观察到数据分布。
12.sns.boxplot(x="",y="",hue="",data=df,orient="h")
:绘制盒形图,hue一样指定对数据的分类。在统计学中有四分位数的概念,第一个四分位记作Q1,第二个四分位数记作Q2,第三个四分位数记作Q3,Q3-Q1获得的结果Q叫作四分位距,若是一个数n,n的范围是n<Q1-1.5Q或n>Q3+1.5Q,则称n为离群点,也就是不符合数据规范的点,利用盒形图能够很清晰地观察到离群点。若是传入orient则画出的盒形图是横向的。
13.sns.violinplot(x="",y="",data=df,hue="",split=bool)
:绘制小提琴图,split表示是否将两类数据分开绘制,若是为True,则不分开绘制,默认为False。
14.还能够将页状散点图和小提琴图在一块儿绘制,只需将两个绘图命令
inner="None"表示去除小提琴图内部的形状。
15.sns.barplot(x="",y="",hue="",data=df)
:按hue的数据分类绘制条形图。
16.sns.pointplot(x="",y="",hue="",data=df)
:绘制点图,点图能够更好的描述数据的变化差别。
17.咱们还能够传入其余参数:
sns.pointplot(x="class",y="survived",hue="sex",data=titanic, palette={"male":"#02ff96","female":"#0980e6"},#指定曲线的颜色 markers=["s","d"],linestyles=["-","-."])#指定曲线的点型和线型
绘制出的图像以下
18.sns.factorplot(x="", y="", hue="", data=df)
:绘制多层面板分类图。
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips)
绘制的图像以下
19.sns.factorplot(x="",y="",hue="",data=df,kind="")
:kind中指定要画图的类型。
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="bar")
sns.factorplot(x="day",y="total_bill",hue="smoker",col="time",data=tips,kind="swarm")
sns.factorplot(x="time",y="total_bill",hue="smoker",col="day",data=tips,kind="box",size=5,aspect=0.8) #aspect指定横纵比
20.sns.factorplot()
的参数:
21.sns.FacetGrid()
:这是一个很重要的绘图函数。
g = sns.FacetGrid(tips,col="time") g.map(plt.hist,"tip")
g = sns.FacetGrid(tips,col="sex",hue="smoker",size=5,aspect=1) g.map(plt.scatter,"total_bill","tip",alpha=0.3,s=100)#alpha指定点的透明度,s指定点的大小 g.add_legend()#添加图例
g = sns.FacetGrid(tips,col="day",size=4,aspect=0.8) g.map(sns.barplot,"sex","total_bill")
22.sns.PairGrid()
:将各变量间的关系成对绘制。
iris = sns.load_dataset("iris") g = sns.PairGrid(iris) g.map(plt.scatter)
23.g.map_diag()
和g.map_offdiag()
:绘制对角线和非对角线的图形
g = sns.PairGrid(iris) g.map_diag(plt.hist) #指定对角线绘图类型 g.map_offdiag(plt.scatter) #指定非对角线绘图类型
g = sns.PairGrid(iris, hue="species") g.map_diag(plt.hist) g.map_offdiag(plt.scatter) g.add_legend()
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species",size=3) g.map(plt.scatter)
g = sns.PairGrid(tips, hue="size", palette="GnBu_d") g.map(plt.scatter, s=50, edgecolor="white") g.add_legend()
24.sns.heatmap()
:绘制热度图,热度图能够很清楚看到数据的变化状况以及变化过程当中的最大值和最小值。
uniform_data = np.random.rand(3, 3) print (uniform_data) heatmap = sns.heatmap(uniform_data)
25.向heatmap()中传入参数vmin=
和vmax=
。
ax = sns.heatmap(uniform_data,vmin=0.2,vmax=0.5) #超过最大值都是最大值的颜色,小于最小值都是最小值的颜色
26.
normal_data = np.random.randn(3, 3) print (normal_data) ax = sns.heatmap(normal_data, center=0) #center指定右侧图例的中心值
27.
flights = sns.load_dataset("flights") flights = flights.pivot("month", "year", "passengers") ax = sns.heatmap(flights, annot=True,fmt="d",linewidth=0.5) #annot指定是否显示数据,fmt指定数据的显示格式,linewidth指定数据格子间的距离
28.
ax = sns.heatmap(flights, cmap="YlGnBu",cbar=True) #cmap指定图形颜色,cbar表示是否绘制右侧图例。