1.利用sns.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)

理解:条形图主要展现的每个矩形高度的数值变量中心趋势的估计,只显示平均值(或者其他估计值)。纵坐标表示的是平均值或其他估计值。

seaborn的barplot()利用矩阵条的高度反映数值变量的集中趋势,以及使用errorbar功能(差棒图)来估计变量之间的差值统计。

bar plot展示的是某种变量分布的平均值,当需要精确观察每类变量的分布趋势boxplot与violinplot往往是更好的选择。

重要参数:
1)x,y:data中的变量名词或者向量;
hue:data中的变量名词或者向量,用于分类,类似分类标签;
2)orient:< “v” 或 “h” >
绘图的方向(垂直或水平)。这通常是从输入变量的数据类型推断出来的,但是可以用来指定“分类”变量是数字还是宽格式数据。
3)estimator:可回调函数,设置每个分类箱的统计函数;
4)errwidth:float类型,表示误差线的厚度;errcolor:表示置信区间的线条颜色;
5)estimator:设置对每类变量的计算函数,默认为平均值,可修改为max、median、max等;from numpy import median
在这里插入图片描述
2.绘图优化问题
1)设置坐标轴标题
https://blog.csdn.net/qq_41904729/article/details/117444384

plt.figure(figsize = [20,10],dpi=100)
ax = sns.barplot(x ,y )
ax.set_xticklabels(labels = ['1','2','...'], rotation = 45,fontsize = 15) 
ax.set_yticklabels(labels = [0,500,...],fontsize = 15)
plt.xlabel('1',fontsize=18) 
plt.ylabel('2',fontsize=18) 

或直接添加:plt.tight_layout()

2)设置legend

ax.legend(handles=ax.legend_.legendHandles, labels=[ 'Negative','Positive'])

3)画一条水平直线

ax.axhline(y,c='r',ls='--',lw=2)

参数:y:水平参考线的出发点;
c:参考线的颜色;
ls:参考线的线条样式;
lw:参考线的宽度.

4)设置刻度线

# plt.tick_params(axis='both',which='both',direction='in')
plt.xticks(rotation = 45,fontsize=10)

3.sns.countplot绘图
countplot是seaborn库中分类图的一种,作用是使用条形显示每个分箱器中的观察计数。

sns.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)

举例:sns.countplot(y ='1',hue="class", data=df)

4.sns.boxplot()
箱形图(Box-plot),又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。它能显示出一组数据的最大值、最小值、中位数及上下四分位数。

seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)

举例:具体参考https://blog.csdn.net/weixin_29558841/article/details/112441501

ax3 = sns.boxplot(x="1", y="2", hue="3",palette=['b','r'],width=1.0,
                  fliersize=4,
                  flierprops = {'marker':'o','markerfacecolor':'lime','color':'lime'}, 
                  capprops={'linestyle':'-','color':'k'},
                  whiskerprops={'linestyle':'-','color':'k'},
                  linewidth=.5,data=df,ax = ax[1][0])

5.seaborn.violinplot

seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)

6.seaborn绘制子图
1)绘制子图,共享坐标轴

fig, ax1 = plt.subplots(figsize=(10,6),dpi=100)
ax1.set_xlabel('1',fontsize=16)
ax1.set_ylabel('a',fontsize=16)

ax1 = sns.boxplot(x="2", y="3", hue="class",data=df)
ax1.tick_params(axis='y')

ax2 = ax1.twinx()
ax2 = sns.countplot(x ='2',hue="class", data=df)
ax2.set_ylabel('Number', fontsize=16)
ax2.tick_params(axis='y', color='yellow')

plt.show()

2)绘制多个子图,不共享坐标轴

fig, ax = plt.subplots(1, 2, figsize=(10, 5))
sns.countplot(x='class', data=titanic, ax=ax[0])
sns.countplot(y='class', data=titanic, ax=ax[1])

注意如果绘制2*2的图时:ax=ax[0][0];ax=ax[0][1];ax=ax[1][0];ax=ax[1][1];

参考资料:
参数讲解:https://blog.csdn.net/Artoria_QZH/article/details/102768817

Python数据可视化-seaborn:https://www.cnblogs.com/gczr/p/6767175.html

barplot与countplot:https://zhuanlan.zhihu.com/p/24553277

seaborn库之countplot:https://www.cnblogs.com/cymx66688/p/10536403.html

超详细的讲解:https://blog.csdn.net/qq_40195360/article/details/86605860

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐