专栏推荐seaborn的使用

seaborn学习框架是这样的:

第一个:seaborn风格的学习

第二个:seaborn的调色板

第三个:分布数据集的可视化:单变量分析绘图和多变量分析绘图

第四个:线性关系可视化

第五个:分类关系的可视化

第一个:

Seaborn将matplotlib参数分成两个独立的组。第一组设定了美学风格,第二组则是不同的度量元素,这样就可以很容易地添加到代码当中了。

操作这些参数的接口是两对函数。为了控制样式,使用axesstyle()和setstyle()函数。为了扩展绘图,使用plotting_context()和set_context()函数。

第一个函数返回一个参数字典,第二个函数则设置matplotlib默认属性


sns.set()这句代码的意思就是重置seaborn的参数,就是以前设置的seaborn风格无效,如果参数为空就表示使用默认的seaborn风格,这是默认的风格实际上就是darkgrid风格,实际上有五种风格

python绘图教程入门(常用的绘图工具总结)(1)

一共有五个样式,那么可以使用sns.set_style("五种风格")来指定是使用哪种风格,指定之后所有的绘图就都会按照这样的风格来画

除了直接指定风格,使用已经存在的这五种风格之外,还可以自定义seaborn的样式,通过传递字典参数的方式

sns.set_style("ticks",{"xtick.major.size":8,"ytick.major.size":8})的方式来设置更加具体的样式

set_style的第二个参数是rc。用于指定自定义的seaborn的样式,rc字典中的键可以设置为下图中的这么多

python绘图教程入门(常用的绘图工具总结)(2)

python绘图教程入门(常用的绘图工具总结)(3)


除了以上的五种风格之外,还有sns.despine()这个是控制绘图的边框的,默认删除上方和右边的方框。

sns.despine(left=True)删除左边方框

sns.despine(offset=10,trim=True)offset是两坐标轴离开距离,当边框没有覆盖整个数据轴的范围时,trim参数会限制留存的边框范围

despine(fig=None, ax=None, top=True, right=True, left=False, bottom=False, offset=None, trim=False)


设置一些线和字体的样式,从上到下线条越来越粗

sns.set_context("paper")

sns.set_context("talk")

sns.set_context("poster")

sns.set_context("notebook")默认设置

还可以使用一些名称来调用set_context来设置参数,然后通过提供的参数值的字典来覆盖参数,写入更加具体的一些配置

sns.set_context("notebook",font_scale=1.5,rc={"lines.linewidth":2.5})


seaborn的调色板

color_palette()能传入任何Matplotlib所支持的颜色

color_palette()不写参数则默认颜色

set_palette()设置所有图的颜色

最重要的就是直接设置调色板的函数就是color_palette()这个函数提供了许多seaborn内生成颜色的方式,并且它可以用于任何函数内部的palette参数设置

具体使用方法为:

sns.set(rc={"figure.figsize":(6,6)})设置美学参数

current_palette=sns.color_palette()设置一个默认的调色板

sns.palplot(current_palette)设置当前使用这个调色板

上面就是使用一个调色板的简单的形式,调色板有三种:

分类调色板,连续调色板,离散调色

分类调色板

默认的调色板只有6个颜色,如果要是使用8个颜色呢

current_palette=sns.color_palette("his",8)

his是一个颜色空间,表示在his中均匀取8份,这样的调色板上就有8中颜色了。

画板有了之后除了可以通过sns.palplot来设置当前使用的这个调色板之外还可以在画图的时候通过palette来指定

sns.boxplotl(data=data,palette=current_palette)data有8个数据,而current_palette正好有8个颜色

题外话:np.random.normal(size,loc.scale)是高斯分布

除了可以使用调色板来设置颜色之外还可以通过控制颜色的高度或者饱和度来控制颜色,函数是hls.palette()函数。

举例使用是:

sns.set(rc={"figure.figsize":(6,6)})

sns.palpllot(sns.hls_palette(8,l=.7,s=.9))

l表示亮度,s表示饱和度

由于人类视觉系统的工作方式,会导致在RGB度量上强度一致的颜色在视觉中并不平衡。比如,我们黄色和绿色是相对较亮的颜色,而蓝色则相对较暗,使得这可能会成为与hls系统一致的一个问题。

为了解决这一问题,seaborn为husl系统提供了一个接口,这也使得选择均匀间隔的色彩变得更加容易,同时保持亮度和饱和度更加一致。

sns.palplot(sns.color_palette("husl", 8))

Color Brewer工具,它提供了一些关于调色板是色盲安全的指导。有各种各样的适合色盲的颜色,但是最常见的变异导致很难区分红色和绿色。一般来说,避免使用红色和绿色来表示颜色以区分元素是一个不错的主意。

sns.palplot(sns.color_palette("Paired"))

sns.palplot(sns.color_palette("Set2", 10))


连续色板

sns.palplot(sns.color_palette("BLUE"))蓝色连续,后加-r是反转,后加-d是暗处理

cubehelix调色板系统具有线性增加或降低亮度和色调变化顺序的调色板,Matplotlib拥有一个默认的内置cubehelix版本可供创建:

sns.palplot(sns.color_palette("cubehelix", 8))

通过seaborn的cubehelix_palette()函数返回的调色板与matplotlib默认值稍有所不同,它不会在色轮周围旋转或覆盖更广的强度范围。seaborn还改变了排序使得更重要的值显得更暗:

sns.palplot(sns.cubehelix_palette(8))

其他cubehelix_palette()的参数主要调整色板的视觉。两个重要的选择是:start(值的范围为03)和rot,还有rot的次数(-11之间的任意值)

sns.palplot(sns.cubehelix_palette(8, start=.5, rot=-.75))

使用light_palette() 和dark_palette()调用定制连续调色板

sns.palplot(sns.light_palette("green"))

sns.palplot(sns.dark_palette("purple"))


离散色板

选择离散色板的规则类似于顺序色板,除了你想满足一个强调的颜色中点以及用不同起始颜色的两个相对微妙的变化。同样重要的是,起始值的亮度和饱和度是相同的。

Color Brewer颜色字典里拥有一套精心挑选的离散颜色映射:

sns.palplot(sns.color_palette("BrBG", 7))

sns.palplot(sns.color_palette("RdBu_r", 7))

另一个在matplotlib中建立coolwarm面板。请注意,这个颜色映射在中间值和极端之间并没有太大的对比。

sns.palplot(sns.color_palette("coolwarm", 7))

,