一、介绍与安装
1、介绍
- 官网:http://seaborn.pydata.org/index.html
- Github: https://github.com/mwaskom/seaborn
Seaborn
其实是在matplotlib的基础上进行了更高级的API
封装,从而使得作图更加容易- 在大多数情况下使用
seaborn
就能做出很具有吸引力的图,而使用matplotlib
就能制作具有更多特色的图。应该把Seaborn
视为matplotlib
的补充2、安装
- 直接
pip3 install seaborn
即可
二、分布图
1、distplot
- 导入包
|
|
- 加载
seaborn
中的数据集:tips = sns.load_dataset('tips')
分布图
kde
是高斯分布密度图,绘图在0-1之间hist
是否画直方图rug
在X轴上画一些分布线fit
可以制定某个分布进行拟合label
legend时的值axlabel
制定横轴的说明12345sns.distplot(tips['total_bill'], bins=None, hist=True, kde=False, rug=True, fit=None,hist_kws=None, kde_kws=None, rug_kws=None,fit_kws=None, color=None, vertical=False,norm_hist=False, axlabel=None, label=None, ax=None)sns.plt.show()
拟合分布
- 这里使用了gamma分布拟合123from scipy import statssns.distplot(tips.total_bill, fit=stats.gamma, kde=False)sns.plt.show()
- 这里使用了gamma分布拟合
2、kdeplot
- 高斯概率密度图
data2
可以是二维的分布shade
是否填充kernel
核函数,还有很多核函数,比如cos, biw等cumulative
累积的作图,最后的值应该是接近1gridsize
多少个点估计
|
|
二、pairplot
1、两两作图
iris
为例data
: DataFrame格式的数据hue
: label类别对应的column namevars
: 指定feature的列名kind
: 作图的方式,可以是reg或scatterdiag_kind
: 对角线作图的方式,可以是hist或kde123456789iris = sns.load_dataset('iris')g = sns.pairplot(iris, hue='species', hue_order=None, palette=None,vars=list(iris.columns[0:-1]),x_vars=None, y_vars=None,kind="reg", diag_kind="hist",markers=['o','s','D'], size=1.5, aspect=1,dropna=True, plot_kws=None,diag_kws=None, grid_kws=None)sns.plt.show()
三、stripplot和swarmplot
1、stripplot
- tips为例,查看每天的数据信息
x
: X轴数据y
: Y轴数据hue
: 区分不同种类数据的column namedata
: DataFrame类型数据jitter
: 将数据分开点,防止重叠1234567tips = sns.load_dataset('tips')ax = sns.stripplot(x='day', y='total_bill', hue=None, data=tips, order=None,hue_order=None, jitter=True,split=False, orient=None,color=None, palette=None, size=5,edgecolor="gray", linewidth=0,ax=None)
- 查看关于性别消费的信息
|
|
2、swarmplot
- 与stripplot类似,只是数据点不会重叠 (适合小数据量)
|
|
四、boxplot
1、boxplot示意图
- 函数
x, y
:指定X轴,Y轴的columns name值hue
: 指定要区分的类别12345678tips = sns.load_dataset('tips')ax = sns.boxplot(x='day', y='total_bill', hue=None, data=tips, order=None,hue_order=None, orient=None,color=None, palette=None,saturation=.75, width=.8,fliersize=5, linewidth=None,whis=1.5, notch=False, ax=None)sns.plt.show()
- 可以和上面的stripplot一起用
|
|
五、jointplot
1、jointplot
- 联合作图
kind
: 有scatter” | “reg” | “resid” | “kde” | “hex12345678910tips = sns.load_dataset('tips')from scipy import statsg = sns.jointplot(x='total_bill', y='tip',data=tips, kind="reg",stat_func=stats.pearsonr,color=None, size=6, ratio=5,space=.2, dropna=True, xlim=None,ylim=None, joint_kws=None,marginal_kws=None, annot_kws=None)sns.plt.show()
- 可以在基础上再作图
- plot_joint就是在联合分布上作图
- plot_marginals就是在边缘分布上再作图1g = (sns.jointplot(x='total_bill', y='tip',data=tips).plot_joint(sns.kdeplot))
六、violinplot
1、小提琴图,和boxplot很像
- 对称的kde图
- 中间的白点是中位数,黑色粗线对应分位数
inner
: 指定图里面用什么划分,有"box", "quartile", "point", "stick", None
quartile
为四分位数划分stick
很像rug,就是可以看出密度情况
scale
: 缩放每个图对应的area, 取值有"area", "count", "width"
area
指定每个有相同的areacount
会按数量缩放(数量少的就比较窄扁)123456789101112tips = sns.load_dataset('tips')ax = sns.violinplot(x='day', y='total_bill',hue='smoker', data=tips, order=None,hue_order=None, bw="scott",cut=2, scale="area",scale_hue=True, gridsize=100,width=.8, inner="quartile",split=False, orient=None,linewidth=None, color=None,palette='muted', saturation=.75,ax=None)sns.plt.show()
七、pointplot, bar
1、pointplot
- 点图
estimator
:点的取值是,默认是np.mean
123456789tips = sns.load_dataset('tips')sns.pointplot(x='time', y='total_bill', hue='smoker', data=tips, order=None,hue_order=None, estimator=np.mean, ci=95,n_boot=1000, units=None, markers="o",linestyles="-", dodge=False, join=True,scale=1, orient=None, color=None,palette=None, ax=None, errwidth=None,capsize=None)sns.plt.show()
2、barplot
- 条形图
- y轴是
mean value
,和点图其实差不多12345678tips = sns.load_dataset('tips')sns.barplot(x='day', y='total_bill', hue='sex', data=tips, order=None,hue_order=None, estimator=np.mean, ci=95,n_boot=1000, units=None, orient=None,color=None, palette=None, saturation=.75,errcolor=".26", errwidth=None, capsize=None,ax=None)sns.plt.show()
- y轴是
3、countplot
|
|
八、factorplot
1、可以通过这个函数绘制以上几种图
- 指定
kind
即可,有point
,bar
,count
,box
,violin
,strip
row
和col
指定绘制的行数和列数,给出一个种类类型的列名即可1234567891011121314titanic = sns.load_dataset('titanic')sns.factorplot(x='age', y='embark_town',hue='sex', data=titanic,row='class', col='sex',col_wrap=None, estimator=np.mean, ci=95,n_boot=1000, units=None, order=None,hue_order=None, row_order=None,col_order=None, kind="box", size=4,aspect=1, orient=None, color=None,palette=None, legend=True,legend_out=True, sharex=True,sharey=True, margin_titles=False,facet_kws=None)sns.plt.show()
九、heatmap
1、heatmap
|
|
十、时序绘图
1、tsplot
- condition: 和
hue
差不多,指定类别 - estimator: 默认为
np.mean
12345678gammas = sns.load_dataset('gammas')sns.tsplot(data=gammas, time='timepoint', unit='subject',condition='ROI', value='BOLD signal',err_style="ci_band", ci=68, interpolate=True,color=None, estimator=np.mean, n_boot=5000,err_palette=None, err_kws=None, legend=True,ax=None)sns.plt.show()
Reference
- Youtube: https://www.youtube.com/playlist?list=PLgJhDSE2ZLxYlhQx0UfVlnF1F7OWF-9rp
- Github: https://github.com/knathanieltucker/seaborn-weird-parts
- 本文链接: http://lawlite.me/2017/06/14/Seaborn绘图/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议 。转载请注明出处!