在python可视化中,Matplotlib自动化程度非常高,但是,掌握如何设置系统以便获得一个吸引人的图是相当困难的事。为了控制matplotlib图表的外观,Seaborn模块自带许多定制的主题和高级的接口。
Seaborn中有五种可供选择的主题:
1.darkgrid(灰色网格)
2.whitegrid(白色网格)
3.dark(黑色)
4.white(白色)
5.ticks(十字叉)
下面,分别介绍一下五种主题:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
默认情况下matplotlib的画的图是这样的:
sns.set()
sinplot()
seaborn默认浅灰色背景与白色网络线。
sns.set_style("whitegrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)
sns.set_style("dark")
sinplot()
sns.set_style("white")
sinplot()
sns.set_style("ticks")
sinplot()
white和ticks两种主题都会包含没有必要的上边框和右边框。我们可以用despine()函数去除。
sinplot()
# 去掉多余的线
sns.despine()
除了可以用set_style()来设置风格,还可以用axes_style()。
with sns.axes_style("darkgrid"):
plt.subplot(211)
sinplot()
plt.subplot(212)
sinplot()
sns.despine()
接下来,介绍一下seaborn库中的调色板。
颜色在可视化中非常重要,用来代表各种特征,并且提高整个图的观赏性。在seaborn中颜色主要分为连续渐变性和离散分类性。
先说说分类色板,主要用color_palette()函数。
· color_palette()能传入任何Matplotlib所支持的颜色
· color_palette()不写参数则默认颜色
· set_palette()设置所有图的颜色
6个默认的颜色循环主题: deep, muted, pastel, bright, dark, colorblind
current_palette = sns.color_palette()
sns.palplot(current_palette)
默认的颜色只有六种,如果,我们需要更多的颜色,使用hls色彩空间。
sns.palplot(sns.color_palette("hls", 10))
data = np.random.normal(size=(20, 8)) + np.arange(8) / 2
sns.boxplot(data=data, palette=sns.color_palette("hls", 8))
我们还可以通过hls_palette()函数来改变颜色的亮度和饱和度:
· l-亮度 lightness
· s-饱和度 saturation
sns.palplot(sns.hls_palette(8, l=.5, s=.7))
色彩随数据变换,比如数据越来越重要则颜色越来越深。(只用在颜色加s即可)
sns.palplot(sns.color_palette("Blues"))
如果想要翻转渐变,可以在面板名称中添加一个_r后缀。
sns.palplot(sns.color_palette("BuGn_r"))
light_palette() 和 dark_palette()调用定制连续调色板。
x, y = np.random.multivariate_normal([0,0], [[1, -.5], [-.5, 1]], size=3000).T
pal = sns.dark_palette("green", as_cmap=True)
sns.kdeplot(x, y, cmap=pal)
参考:
http://seaborn.pydata.org/tutorial/color_palettes.html#palette-tutorial