barplot参数 python_Python可视化 | Seaborn5分钟入门(二)——barplot&countplot&pointplot

本文介绍了Python数据可视化库Seaborn中的barplot和pointplot函数,详细讲解了它们的参数用法,包括条形图的统计估计、误差线、颜色控制等,并通过实例展示了如何绘制和自定义条形图、计数图和点图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信公众号:「Python读财」

如有问题或建议,请公众号留言

Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。

49aee99b149d85c0299c894969aeede3.png

注:所有代码均在IPython notebook中实现

barplot(条形图)

条形图表示数值变量与每个矩形高度的中心趋势的估计值,并使用误差线提供关于该估计值附近的不确定性的一些指示。具体用法如下:

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

复制代码

36f68a6ca75207ec877a59182e5d73a3.png

x,y(str):dataframe中的列名

data:dataframe或者数组

sns.barplot(x="color",y="age",data=data)

复制代码

f689a02189f9f516e17647e19abb89e3.png

关于图像的解释:Seaborn会对'color'列中的数值进行归类后按照estimator参数的方法(默认为平均值)计算相应的值,计算出来的值就作为条形图所显示的值(条形图上的误差棒则表示各类的数值相对于条形图所显示的值的误差)

hue(str):dataframe的列名,按照列名中的值分类形成分类的条形图

sns.barplot(x="color",y="age",data=data,hue="gender")

复制代码

4d8b7d72e703e8b072d7a600b9ccc3f2.png

order, hue_order (lists of strings):用于控制条形图的顺序

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=["女","男"])

复制代码

877701d75369e6496bcfffa16a6a967c.png

estimator:控制条形图的取整列数据的什么值

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])  #右图,中位数

复制代码

25116a9b0082e4efc3356c26385e7810.png

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])  #右图

复制代码

f71446467de21aafb2a29ab8f29b16d8.png

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)  #右图

复制代码

7f2d52600f4d789407020af9bf2c7c15.png

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])  #下图

复制代码

133d6a42bb952389a1c7efc623fd0735.png

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])  #右图

复制代码

39bbfcbcdbc5ddd981afb1dbbb9931ac.png

countplot入门

一个计数图可以被认为是一个分类直方图,而不是定量的变量。基本的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])  #右图

复制代码

a314eff5ac9372f17701a7ec02e379a7.png

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])  #右图

复制代码

1309064f5c27e90229a0815e98fb5d54.png

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])  #下图

复制代码

a501a87ff9521e41b09141a97242cd3f.png

pointplot入门

点图代表散点图位置的数值变量的中心趋势估计,并使用误差线提供关于该估计的不确定性的一些指示。点图可能比条形图更有用于聚焦一个或多个分类变量的不同级别之间的比较。他们尤其善于表现交互作用:一个分类变量的层次之间的关系如何在第二个分类变量的层次之间变化。连接来自相同色调等级的每个点的线允许交互作用通过斜率的差异进行判断,这比对几组点或条的高度比较容易。具体用法如下:

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)

复制代码

49f9b4bb4267295accd44b7ad6d3abaa.png

图中的点为这组数据的平均值点,竖线则为误差棒,默认两个均值点会相连接,若不想显示,可以通过join参数实现:

sns.pointplot(x="smoker",y="age",data=data,join=False)

复制代码

f42481e1425654344b2727260f4aec97.png

之前我们演示过barplot的hue参数,现在我们看一下pointplot的hue参数:

sns.pointplot(x="smoker",y="age",data=data,hue="gender")

复制代码

9b2743834a36d13367ad553ca5610a97.png

我们可以看到两个类别的误差棒重叠在了一起,使数据观测不清晰。怎么解决这个问题呢?pointplot的dodge参数可以使重叠的部分错开:

sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True)

复制代码

e81d0ad7ba880b92136667407c1027e6.png

接下来我们对均值点的样式(由参数markers控制)和相同色调的点之间的连线(由参数linestyles控制)做一下改动。

sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True,markers=["*","x"],linestyles=["-.","--"])

复制代码

3414781d9376e8a4a0ba9f286f4e0a77.png

其他样式请参考matplotlib线条样式

将X,Y轴互换

sns.pointplot(x="age",y="color",data=data)

复制代码

db727f0662f855ab7ddf45015020258b.png

通过color参数控制不同单层图的颜色

sns.pointplot(x="age",y="color",data=data,color="#bb3f3f")

复制代码

ee17c8aa502cab9c0e59da581b85a39e.png

还有其他效果和barplot一样的参数,大家可以动手自己试一下。以上内容是我结合官方文档和自己的一点理解写成的,有什么错误大家可以指出来并提提意见,共同交流、进步,也希望我写的这些能够给阅读完本文的你或或少的帮助!

关注公众号 「Python读财」,后台回复「py」即可获取Python学习资源礼包,还有Python学习交流群哦!

532d89db259af57f1d5af8dc275f3fb3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值