01、python数据分析与机器学习实战——Python可视化库Seaborn

seaborn简介

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。

seaborn基础

import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

1.seaborn的整体布局风格设置

seaborn有五种风格
whitegrid风格:

sns.set_style("whitegrid")
data=np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data)
plt.show()

在这里插入图片描述
dark风格:

sns.set_style("dark")
data=np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data)
plt.show()

在这里插入图片描述
white风格:

sns.set_style("white")
data=np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data)
plt.show()

在这里插入图片描述
ticks风格:

sns.set_style("ticks")
data=np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data)
plt.show()

在这里插入图片描述

2.调色板

(1)、颜色很重要
(2)、color_palette()能传入Matplotlib所支持的颜色
(3)、color_palette()不写参数则默认颜色
(4)、set_palette()设置所有图的颜色
分类色板:
六个默认的颜色循环主题

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

current_paette=sns.color_palette()
sns.palplot(current_paette)

plt.show()

在这里插入图片描述
圆形画板:
当有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持广度和饱和度不变)。
这是大多数的当需要使用比当前默认颜色循环中设置的颜色更多时的默认方案。
最常用的方法是使用hls的颜色空间,这是RGB值的一个简单转换。

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

在这里插入图片描述
hls_palette()函数来控制颜色的亮度和饱和
l —— 亮度 lightness
s —— 饱和 saturation

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

在这里插入图片描述
也可以成对设置颜色:

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

在这里插入图片描述
连续色板:
色彩随数据变换,比如数据越来越重要则颜色越来越深:

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

在这里插入图片描述
也可以翻转过来:

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

在这里插入图片描述
cubehelis_palette()调色板
色调线性变换

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

在这里插入图片描述

单变量分析绘图

演示:特征的可视化

iris=sns.load_dataset("iris")
sns.pairplot(iris)

在这里插入图片描述
在对角线上是单变量的直方图,其他位置是两个变量的散点图。

多变量分析绘图

引入数据集:

np.random.seed(sum(map(ord,"categorical")))
titanic=sns.load_dataset("titanic")
tips=sns.load_dataset("tips")
iris=sns.load_dataset("iris")

sns.stripplot(x="day",y="total_bill",data=tips)

plt.show()

在这里插入图片描述
重叠是很常见的现象,但是重叠影响了观察数据的量。
浮动一下:

sns.stripplot(x="day",y="total_bill",data=tips,jitter=True)

在这里插入图片描述
如果想要让数据完全均匀分开:

sns.swarmplot(x="day",y="total_bill",data=tips)

在这里插入图片描述
补充:
盒图 IQR即统计学概念四分位距,第一/四分位与第三/四分位之间的距离
N=1.5IQR 如果一个值>Q3+N或<Q1-N,则为离群点

回归分析绘图

首先使用一个内置的数据集:

sns.set(color_codes=True)

np.random.seed(sum(map(ord,"regression")))

tips=sns.load_dataset("tips")

tips.head()

在这里插入图片描述
regpolt()和implot()都可以绘制回归关系,推荐regpolt(),支持参数更多。

x=“total_bill”,y="tip"之间的回归关系:

sns.regplot(x="total_bill",y="tip",data=tips)

在这里插入图片描述
x=“size”,y="tip"之间的回归关系:

sns.regplot(x="size",y="tip",data=tips)

在这里插入图片描述
不过这好像并没有什么鬼关系,我们可以加上一个小范围的浮动值:

sns.regplot(x="size",y="tip",data=tips,x_jitter=.05)

在这里插入图片描述

内容很多,慢慢消化,慢慢补充。

原文地址:https://www.cnblogs.com/AlexKing007/p/12339472.html