微信公众号:「Python读财」
若有问题或建议,请公众号留言
Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn实际上是在matplotlib的基础上进行了更高级的API封装,从而使得做图更加容易,不须要通过大量的调整就能使你的图变得精致。api
注:全部代码均在IPython notebook中实现数组
条形图表示数值变量与每一个矩形高度的中心趋势的估计值,并使用偏差线提供关于该估计值附近的不肯定性的一些指示。具体用法以下:微信
seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=(function mean), ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)
接下来仍是经过具体例子学习里面的一些参数的用法:学习
%matplotlib inline import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt.rc("font",family="SimHei",size="12") #用于解决中文显示不了的问题 sns.set_style("whitegrid")
本篇文章所采用的数据集内容以下字体
data.head(5) #data是一个dataframe
x,y(str)
:dataframe中的列名spa
data
:dataframe或者数组3d
sns.barplot(x="color",y="age",data=data)
关于图像的解释:Seaborn会对”color“列中的数值进行归类后按照estimator参数的方法(默认为平均值)计算相应的值,计算出来的值就做为条形图所显示的值(条形图上的偏差棒则表示各种的数值相对于条形图所显示的值的偏差)code
hue(str)
:dataframe的列名,按照列名中的值分类造成分类的条形图blog
sns.barplot(x="color",y="age",data=data,hue="gender")
order
, hue_order (lists of strings)
:用于控制条形图的顺序ci
fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) sns.barplot(x="gender",y="age",data=data,ax=axes[1],order=["女","男"])
estimator:<function name>控制条形图的取整列数据的什么值
fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) #左图,默认为平均值 sns.barplot(x="gender",y="age",estimator=np.median,data=data,ax=axes[1]) #右图,中位数
ci(float)
: 置信区间(在0-100之间),若填写"sd"
,则用标准偏差。(默认为95)
fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ci=0,ax=axes[0]) #左图 sns.barplot(x="color",y="age",data=data,ci="sd",ax=axes[1]) #右图
capsize(float):设置偏差棒帽条(上下两根横线)的宽度
fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ax=axes[0],capsize=.2) #左图 sns.barplot(x="color",y="age",data=data,ax=axes[1],capsize=.5) #右图
palette
:调色板,控制不一样的颜色style
fig,axes=plt.subplots(2,1) sns.barplot(x="color",y="age",data=data,ax=axes[0]) #上图 sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1]) #下图
X,Y轴互换
fig,axes=plt.subplots(1,2) sns.barplot(x="age",y="color",data=data,ax=axes[0]) #左图 sns.barplot(x="color",y="age",data=data,ax=axes[1]) #右图
一个计数图能够被认为是一个分类直方图,而不是定量的变量。基本的api和选项与barplot()相同,所以您能够比较嵌套变量中的计数。(工做原理就是对输入的数据分类,条形图显示各个分类的数量)具体用法以下:
seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
注:countplot参数和barplot基本差很少,能够对比着记忆,有一点不一样的是countplot中不能同时输入x和y,且countplot没有偏差棒。
根据例子体验一下:
fig,axes=plt.subplots(1,2) sns.countplot(x="gender",data=data,ax=axes[0]) #左图 sns.countplot(y="gender",data=data,ax=axes[1]) #右图
fig,axes=plt.subplots(1,2) sns.countplot(x="gender",hue="smoker",data=data,ax=axes[0]) #左图 sns.countplot(y="gender",hue="smoker",data=data,ax=axes[1]) #右图
fig,axes=plt.subplots(2,1) sns.countplot(x="color",data=data,ax=axes[0]) #上图 sns.countplot(x="color",data=data,palette="Set3",ax=axes[1]) #下图
点图表明散点图位置的数值变量的中心趋势估计,并使用偏差线提供关于该估计的不肯定性的一些指示。点图可能比条形图更有用于聚焦一个或多个分类变量的不一样级别之间的比较。他们尤为善于表现交互做用:一个分类变量的层次之间的关系如何在第二个分类变量的层次之间变化。链接来自相同色调等级的每一个点的线容许交互做用经过斜率的差别进行判断,这比对几组点或条的高度比较容易。具体用法以下:
seaborn.pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=(function mean), ci=95, n_boot=1000, units=None, markers='o', linestyles='-', dodge=False, join=True, scale=1, orient=None, color=None, palette=None, errwidth=None, capsize=None, ax=None, **kwargs)
下面继续使用以前的数据集进行绘图,和barplot相同的参数就再也不具体演示,重点演示pointplot独有的。
sns.set(font_scale) #初始化seaborn配置,并设置字体大小 sns.set_style("darkgrid") #灰色网格背景 sns.pointplot(x="smoker",y="age",data=data)
图中的点为这组数据的平均值点,竖线则为偏差棒,默认两个均值点会相链接,若不想显示,能够经过join
参数实现:
sns.pointplot(x="smoker",y="age",data=data,join=False)
以前咱们演示过barplot的hue
参数,如今咱们看一下pointplot
的hue
参数:
sns.pointplot(x="smoker",y="age",data=data,hue="gender")
咱们能够看到两个类别的偏差棒重叠在了一块儿,使数据观测不清晰。怎么解决这个问题呢?pointplot的dodge
参数可使重叠的部分错开:
sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True)
接下来咱们对均值点的样式(由参数markers
控制)和相同色调的点之间的连线(由参数linestyles
控制)作一下改动。
sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True,markers=["*","x"],linestyles=["-.","--"])
其余样式请参考matplotlib线条样式
将X,Y轴互换
sns.pointplot(x="age",y="color",data=data)
经过color
参数控制不一样单层图的颜色
sns.pointplot(x="age",y="color",data=data,color="#bb3f3f")
还有其余效果和barplot同样的参数,你们能够动手本身试一下。以上内容是我结合官方文档和本身的一点理解写成的,有什么错误你们能够指出来并提提意见,共同交流、进步,也但愿我写的这些可以给阅读完本文的你或或少的帮助!
关注个人公众号「Python读财」,后台回复「py」便可获取Python学习资源礼包,还有Python学习交流群哦!