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