1. matplotlib与seaborn的关系
matplotlib绘图参数非常多,可以通过参数精细的控制图形输出,这是它的优点。但同时也很复杂,绘一个图常常需要很多行代码,需要使用者熟悉众多图形控制参数,不容易上手,这是它的缺点。seaborn是基于matplotlib的数据可视化软件包,本身并不画图,而是调用matplotlib进行绘图,在做探索式数据分析时,特别是对于dataframe数据结构,seaborn比matplotlib高效得多,简单的图只要1-2行代码就可以完成。为了简单易用,将很多matplotlib的用于图形精细控制、跟数据分析关系不大的参数(如线宽、数据点大小,透明度等),放到一个参数集合中提供调用,因此如果在使用seaborn进行数据分析时,如果需要对图形对进行一些小对修改,往往需要向seaborn传递matplotlib参数。
2. 向seanborn画图函数传递matplotlib绘图参数
以seanborn 的lmplot为例,说明如何向seanborn画图函数传递matplotlib参数。
seaborn.lmplot(x, y, data, hue=None, col=None, row=None, ... scatter_kws=None, line_kws=None, size=None)
其中scatter_kws=None, line_kws=None是可以用字典等格式作向seaborn传递matplotlib参数。
sns.set(style="darkgrid")
grid = sns.lmplot(x='YEARS_EXPERIENCE', y='BASE_SALARY', hue='GENDER', data=employee)
图形输出如下:
数据点太多来,重合比较厉害,想把数据点等大小调小一点,但 sns.lmplot并没有控制数据点大小但参数,需要调用matplotlib.pyplot.scatter的参数。
matplotlib.pyplot.scatter的参数如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
其中,参数s控制数据点的大小,我们可以在seaborn中通过scatter_kws={'s':10}可以将matplotlib参数s=10传递给seaborn。
sns.set(style="darkgrid")
grid = sns.lmplot(x='YEARS_EXPERIENCE', y='BASE_SALARY', hue='GENDER',
scatter_kws={'s':10}, data=employee)
图形输出如下: