python数据分析与机器学习实战我爱编程

(十五)Seaborn知识学习2-python数据分析与机器学习

2018-05-10  本文已影响98人  努力奋斗的durian

文章原创,最近更新:2018-05-10

1.Seaborn调色板的介绍
2.调色板相关的函数
3.分类色板
4.圆形画板
课程来源: python数据分析与机器学习实战-唐宇迪

学习参考链接:
1、Seaborn(sns)官方文档学习笔记(第二章 斑驳陆离的调色板)
2、Seaborn官方0.8.1版本

1.Seaborn调色板的介绍

在画图当中有个非常重要的模块就是颜色,在数据图表的绘制当中起着举足轻重的作用.一个图画的好不好看,很大程度上是由颜色的取色漂不漂亮决定的.这个颜色分成两种,一种是离散型的,一种是连续型的.

离散型的比如统计4个运动员,跑步的分布情况.四个运动员可以用不同的颜色进行区分,这就是离散型.就是多个种类用折线图进行统计,这也是离散型.

连续型的比如统计一个运动员一天的情况,一天当中,有些情况是比较重要的,有些情况是不重要的,在数据当中,可以用一条线画出一条渐变色.渐变色可以用一条数据由重要到不重要或由不重要到重要的一个变化程度.

2.调色板相关的函数:

1)color_palette()能传入任何Matplotlib所支持的颜色
最重要的直接设置调色板的函数,不写参数则默认颜色

2)palplot()
模块seaborn.miscplot中的函数palplot, 将调色板中的值绘制为水平数组,palplot(pal,size = 1)

3)set_palette()设置所有图的颜色
set_palette(palette, n_colors=None, desat=None, color_codes=False)设置所有图的默认颜色循环。

对应的函数set_palette()接受相同的参数,并为所有图设置默认的颜色循环。你也可以在with块中使用color_palette()来实现临时的更改调色板配置。

3.分类色板

分类色板(定性)是在区分没有固定顺序的数据时最好的选择。

Seaborn对颜色提供了非常多的选择方式,默认的颜色循环被更改为一组六种颜色。虽然这些颜色可能会让你想起matplotlib的标准颜色循环,但他们无疑更赏心悦目一些。

默认颜色主题共有六种不同的变化分别是:deep, muted, pastel, bright, dark, 和 colorblind。
类似下面的方式直接传入即可。
current_palette = sns.color_palette("dark") # 直接传入对应的参数即可变化
sns.palplot(current_palette)

六种不同的主题变化,是如何的呢?

import seaborn as sns
current_palette=sns.color_palette()
#等价current_palette=sns.color_palette("deep")
sns.palplot(current_palette)

输出的结果如下:

比如上节课画的箱线图,在没有设置颜色的情况下,绘制的图形就是默认的颜色.


import seaborn as sns
current_palette=sns.color_palette("muted")
sns.palplot(current_palette)

输出的结果如下:


import seaborn as sns
current_palette=sns.color_palette("pastel")
sns.palplot(current_palette)

输出的结果如下:


import seaborn as sns
current_palette=sns.color_palette("bright")
sns.palplot(current_palette)

输出的结果如下:


import seaborn as sns
current_palette=sns.color_palette("dark")
sns.palplot(current_palette)

输出的结果如下:


import seaborn as sns
current_palette=sns.color_palette("colorblind")
sns.palplot(current_palette)

输出的结果如下:


4.圆形画板

当你有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)。这是大多数的当他们需要使用比当前默认颜色循环中设置的颜色更多时的默认方案。

比如:系统默认了6个颜色的主题,比如我要画8个运动员的运动情况,是不是应该有8个颜色呢?那么颜色多于6个的时候,就需要用到画板了。

颜色涉及到两个指标,一个是饱和度一个是亮度。一般都是使用默认的饱和度和亮点,很少情况需要定义饱和度和亮度。

4.1使用hls的颜色空间

设置更多的颜色最常用的方法是使用hls的颜色空间,这是RGB值的一个简单转换。

比如hls的颜色空间,平均分为12等分,使用代码如下:

import seaborn as sns
sns.palplot(sns.color_palette("hls",12))

输出的结果如下:



比如hls的颜色空间,平均分为8等分,使用代码如下:

import seaborn as sns
sns.palplot(sns.color_palette("hls",8))

输出的结果如下:


这里的数量是根据种类而决定的,假设有8个运动员就写8,12个运动员就写12.这种方法比自己自定义颜色容易了很多.如果使用颜色的时候,没有特殊的需求,就按此方法进行.

我们把颜色写出来了,那应该怎么用呢?怎么把这定义好的颜色放到数据中呢?

根据以上调配的颜色,依据sns.boxplot中的参数palette,将颜色传进来,对以下的箱线图的图进行调色,具体代码如下:

import seaborn as sns
import numpy as np

data=np.random.normal(size=(20,8))+np.arange(8)/2
sns.boxplot(data=data,palette=sns.color_palette("hls", 8))

输出的结果如下:


根据输出的结果发现,绘制的图形与调配的8个颜色是一一对应的.

总结:

这里涉及到的知识点:
1)boxplot(),相关参数如下:
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)

4.2控制颜色的亮度和饱和

控制颜色的亮度和饱和,需要用到hls_palette()函数,相关参数如下:

画图的时候,可以指定不同颜色的亮度和饱和度,可以给颜色带了差异.

比如设置hls_palette()中的参数l=.3,s=.8,具体代码如下:

import seaborn as sns
sns.palplot(sns.hls_palette(8,l=.3,s=.8))

输出的结果如下:


比如设置hls_palette()中的参数l=.7,s=.9,具体代码如下:

import seaborn as sns
sns.palplot(sns.hls_palette(8,l=.7,s=.9))

输出的结果如下:



从以上结果都可以看出,饱和度和亮度会影响颜色,可以根据自己实际需要进行设置.

这里涉及的知识点:
1)hls_palette()

4.3绘图颜色的配对

想进行绘图数据的对比,比如一批数据,是由3个国家组成的,每个国家分别有2个运动员,想呈现这样的趋势,国家与国家的颜色要有明显的区别,但是同一国家的两个运动员颜色最好相近.这样能够把数据更加清晰的表达出来.

这里需要用到"Paired",这个调出的调色板是有明显区别的颜色对.

代码如下:

import seaborn as sns
sns.palplot(sns.color_palette("Paired",8))

输出的结果如下:



共调出4对有明显区别的颜色对.通过颜色对来表达颜色的分布.比如每队较深的一个颜色表示一个国家.每队的两个深浅颜色分别表示同一国家的两个运动员.

到底使用什么颜色的画笔,还得看大家实际需求,如果能够把数据描绘得更加清晰,漂亮,那就使用什么样的颜色.

上一篇 下一篇

猜你喜欢

热点阅读