调色盘设置
seaborn
可以非常迅速的做出优美的图形,其中就应该得力于他的调色盘机制。seaborn
根据应用场景提供了三种不同类型的调色盘:定性的
、连续的
、发散的
。
一、定性调色盘:
定性调色盘。一般在数据不连续,比较离散,想体现分类的情况下使用。在seaborn
中,使用sns.color_palette
来创建调色盘。
1. 默认调色盘:
在seaborn
中,默认情况下就设置了一些颜色供绘图使用。使用sns.color_palette
即可获取。并且我们可以通过sns.palplot
来绘制调色盘。示例代码如下:
current_palette = sns.color_palette() sns.palplot(current_palette)
效果图如下:
默认的调色盘有10中颜色。这些颜色都有6中风格。分别是:deep
,muted
,pastel
, bright
,dark
,colorblind
。这几种风格的颜色不变,主要调整的是亮度和饱和度。
current_palette = sns.color_palette("dark")
sns.palplot(current_palette)
2. hls圆形颜色系统:
hls
圆形颜色系统是颜色按照顺序,经过偏移,无缝形成一个圆形。我们在使用这个调色盘的时候,可以指定需要使用多少种颜色。示例代码如下:
# 使用hls圆形颜色系统,取20个颜色
sns.palplot(sns.color_palette("hls",20))
也可以使用另外一个函数sns.hls_palette(n_colors=6, h=0.01, l=0.6, s=0.65)
来实现。这个函数可以传递更多的参数。比如我们可以通过更改hue
来更改开始的颜色,通过更改l
来调整亮度,通过更改s
来调整饱和度。示例代码如下:
sns.palplot(sns.hls_palette(10,h=0.4,l=0.4,s=0.5))
另外也可以通过sns.husl_palette
来实现色系的调整,这个方法比sns.hls_palette
亮度和饱和度更加的均匀。
sns.palplot(sns.husl_palette(10))
3. 分类颜色:
分类颜色是seaborn
已经提前给你定义了一些颜色,使用这些颜色在做分类分组的时候可以按照自己的需求选择。示例代码如下:
sns.palplot(sns.color_palette("Paired"))
关于分类的颜色选择,可以通过sns.choose_colorbrewer_palette("qualitative")
来查看。这个方法只能用在jupyter notebook
中。可以选择不同的样式,然后还可以调节饱和度等。效果图如下:
4. 用xkcd颜色:
xkcd
是一个漫画名称或者是工作室。xkcd
开展了一项众包活动,为随机的RGB
颜色命名。这产生了一组954
种命名颜色。我们可以从sns.xkcd_palette
里面提取颜色。提取到后,如果想要用在palette
参数中,那么还需要放到sns.xkcd_palette
中。所有的xkcd
颜色的名称可以参考官网:https://xkcd.com/color/rgb/
。示例代码如下:
# 获取名字为blue green的颜色
print(sns.xkcd_rgb["blue green"])
# 用xkcd的颜色名称构建一个palette对象
colors = ["windows blue", "amber", "greyish", "faded green", "dusty purple"]
sns.palplot(sns.xkcd_palette(colors))
二、连续的颜色盘:
有时候我们绘图的时候,想要使用一个同种色系,但是不同深浅,这时候就可以使用连续的颜色盘。示例代码如下:
sns.palplot(sns.color_palette("Blues"))
默认颜色是从浅入深,如果想要从深变浅,那么可以在色系后加一个_r
。示例代码如下:
sns.palplot(sns.color_palette("Blues_r"))
我们也可以通过sns.choose_colorbrewer_palette("sequential")
查看有哪些色系可供选择。效果图如下:
三、离散的色盘:
离散的色盘,是两边的颜色逐渐加深,中间的颜色最淡。或者是中间的颜色最深,两边的颜色最淡。一般离散的色盘可以用于比如温度,零度以上可以用红色表示,零度以下用蓝色表示。越红的地方,表示温度越高,越蓝的地方,表示温度越低。示例代码如下:
values = [12,15,17,18,-5,-10]
with sns.color_palette("RdBu_r"):
sns.barplot([1,2,3,4,5,6],sorted(values))
也可以通过sns.choose_colorbrewer_palette("diverging")
查看离散的色盘有哪些可以选择。
还可以通过sns.diverging_palette(h_neg, h_pos, s=75, l=50, sep=10, n=6, center='light', as_cmap=False)
来自定义离散色盘。在这里不再做过多讲解。
四、官方文档:
https://seaborn.pydata.org/tutorial/color_palettes.html
。