1什么是Seaborn

Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。

2.Style

import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
#%matplotlib具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,
#或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。
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()

python seaborn教程 python seaborn库_python seaborn教程

sns.set()#默认风格
#主要通过set()和set_style()两个函数对整体风格进行控制。set(style=" ")方式,也可以通过set_style( " " )
sinplot()

主要通过set()和set_style()两个函数对整体风格进行控制。set(style=" ")方式,也可以通过set_style( " " )

五种风格darkgrid whitegrid dark white ticks

python seaborn教程 python seaborn库_Seaborn_02

sns.set_style("whitegrid")
data=np.random.normal(size=(20,6))+np.arange(6)
sns.boxplot(data=data)#箱形图

python seaborn教程 python seaborn库_python seaborn教程_03

sinplot()
sns.despine()#去掉上边缘和右侧边缘的边线

python seaborn教程 python seaborn库_python seaborn教程_04

f,ax=plt.subplots()
sns.violinplot(data)
sns.despine(offset=10)

violinplot与boxplot扮演类似的角色,它显示了定量数据在一个(或多个)分类变量的多个层次上的分布,这些分布可以进行比较。不像箱形图中所有绘图组件都对应于实际数据点,小提琴绘图以基础分布的核密度估计为特征。

python seaborn教程 python seaborn库_Seaborn_05


临时设置绘图风格

虽然来回切换风格很容易,但是你也可以在一个with语句中使用axes_style()方法来临时的设置绘图参数。这也允许你用不同风格的轴来绘图:

with sns.axes_style("darkgrid"):
    plt.subplot(211)
    sinplot()
plt.subplot(212)
sinplot(-1)

python seaborn教程 python seaborn库_python_06


有四个预置的环境,按大小从小到大排列分别为:paper, notebook, talk, poster。其中,notebook是默认的。

控制风格:axes_style(), set_style()

缩放绘图:plotting_context(), set_context()

每对方法中的第一个方法(axes_style(), plotting_context())会返回一组字典参数,而第二个方法(set_style(), set_context())会设置matplotlib的默认参数。

sns.set_context('paper')
sinplot()

python seaborn教程 python seaborn库_Seaborn_07

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

python seaborn教程 python seaborn库_Seaborn_08

3颜色

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
sns.set(rc={"figure.figsize":(6,6)})

调色板
color_palette()能传入任何Matplotlib所支持的颜色,不写参数则为默认颜色
color_palette函数可以接受任何seaborn或者matplotlib颜色表中颜色名称(除了jet),也可以接受任何有效的matplotlib形式的颜色列表
(比如RGB元组,hex颜色代码,或者HTML颜色名称)。
这个函数的返回值总是一个由RGB元组组成的列表,无参数调用color_palette函数则会返回当前默认的色环的列表。
set_palette()设置所有图的颜色
有三种通用的color palette可以使用,它们分别是:qualitative,sequential,diverging。
分类色板(quanlitative)
Qualitative调色板,也可以说成是 类型 调色板,因为它对于分类数据的显示很有帮助。当你想要区别 不连续的且内在没有顺序关系的 数据时,这个方式是最好的。

当导入seaborn时,默认的色环就被改变成一组包含6种颜色的调色板,它使用了标准的matplolib色环,为了让绘图变得更好看一些。

current_patette=sns.color_palette()
sns.palplot(current_patette)

python seaborn教程 python seaborn库_python_09


有6种不同的默认主题,它们分别是:deep,muted,pastel,birght,dark,colorblind。

themes=['deep','muted','pastel','bright','dark','colorblind']
for theme in themes:
    current_patette=sns.color_palette(theme)
    sns.palplot(current_patette)

python seaborn教程 python seaborn库_数据_10


*使用色圈系统

默认是有10种颜色,但是我们要想要其他种类的颜色分配

或者说当你有超过10种类型的数据要区分时,最简单的方法就是 在一个色圈空间内使用均匀分布的颜色。这也是当需要使用更多颜色时大多数seaborn函数的默认方式。
最常用的方法是使用hls的颜色空间,这是RGB值的一个简单转换

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

python seaborn教程 python seaborn库_python_11

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

python seaborn教程 python seaborn库_Seaborn_12


hls_palette 函数,它可以让你控制 hls 颜色的亮度和饱和度。

l-亮度 lightness

s-饱和 saturation

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

python seaborn教程 python seaborn库_python_13


由于人类视觉系统工作的原因,根据RGB颜色产生的平均视觉强度的颜色,从视觉上看起来并不是相同的强度。如果你观察仔细,就会察觉到,黄色和绿色会更亮一些,而蓝色则相对暗一些。

seaborn给hls系统提供了一个接口,可以让操作者简单容易的选择均匀分布,且亮度和饱和度看上去明显一致的色调。

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

python seaborn教程 python seaborn库_数据可视化_14


使用分类Color Brewer调色板

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

python seaborn教程 python seaborn库_Seaborn_15

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

python seaborn教程 python seaborn库_数据可视化_16


xkcd包含了一套众包努力的针对随机RGB色的命名。产生了954个可以随时通过xdcd_rgb字典中调用的命名颜色。

plt.plot([0,1],[0,1],sns.xkcd_rgb["pale red"],lw=3)
plt.plot([0,1],[0,2],sns.xkcd_rgb["medium green"],lw=3)
plt.plot([0,1],[0,3],sns.xkcd_rgb["denim blue"],lw=3)

python seaborn教程 python seaborn库_python_17

colors=["windows blue","amber","greyish","faded green"]
sns.palplot(sns.xkcd_palette(colors))

python seaborn教程 python seaborn库_数据可视化_18


连续色板(sequential)

色彩随数据变换,比如数据越来越重要则颜色越来越深.这种调色板对于有从低(无意义)到高(有意义)范围过度的数据非常适合。

sns.palplot(sns.color_palette("Blues"))

python seaborn教程 python seaborn库_python seaborn教程_19


如果想要翻转渐变,可以在名称后加_r后缀

sns.palplot(sns.color_palette("Blues_r"))

python seaborn教程 python seaborn库_python seaborn教程_20


离散色板

这类色板适用于数据特征含有大的低值和大的高值。数据中通常有一个意义明确的中点。

sns.palplot(sns.color_palette(“BrBG”),7)

python seaborn教程 python seaborn库_python_21


cubehelix_palette()调色板

“色调线性变换”

sns.palplot(sns.color_palette(“cubehelix”, 8))

python seaborn教程 python seaborn库_python_22


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

sns.palplot(sns.light_palette(“green”))

python seaborn教程 python seaborn库_python seaborn教程_23


定制的离散色板

函数 diverging_palette() 为离散的数据创建一个定制的颜色映射。该函数使用husl颜色系统的离散色板。你需要传递两种色调,并可选择性的设定明度和饱和度的端点。函数将使用husl的端点值及由此产生的中间值进行均衡。

sns.palplot(sns.diverging_palette(145, 280, s=85, l=25, n=7))

python seaborn教程 python seaborn库_python_24