python可视化之seaborn模块

安装seaborn:

pip3 install seaborn

1. 整体风格设置

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
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)
	plt.show()
sinplot()

在这里插入图片描述

sns.set() # 使用seaborn默认参数组合
sinplot()  # 风格会发生改变

在这里插入图片描述

# 有五种主题风格
# darkgrid whitegrid dark white ticks
sns.set_style("darkgrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)

在这里插入图片描述

2. 调色板

  1. 分类色板
current_palette = sns.color_palette()
sns.palplot(current_palette) 
# 六种默认循环主题色:deep muted pastel bright dark colorbind

在这里插入图片描述

  1. 圆形画板
sns.palplot(sns.color_palette("hls", 8)) # hls八种颜色空间
data = np.random.normal(size=(20, 8)) + np.arange(8) / 2
sns.boxplot(data=data, palette=sns.color_palette("hls", 8))
# 属性:l亮度 s饱和度
# 对比色绘制
sns.boxplot(data=data, palette=sns.color_palette("Paired", 8))

在这里插入图片描述
在这里插入图片描述

  1. xkcd颜色来命名颜色
plt.plot([0, 1],[0, 1], sns.xkcd_rgb["pale red"], lw=3)

在这里插入图片描述

  1. 连续色板
# 由浅到深
sns.palplot(sns.color_palette("Blues"))
# 由深到浅
sns.palplot(sns.color_palette("BuGn_r"))

在这里插入图片描述
在这里插入图片描述

  1. cubehelix_palette()调色板
    色调线性变化:
sns.palplot(sns.color_palette("cubehelix", 8))
sns.palplot(sns.cubehelix_palette(8, start=5, rot=-.75))
sns.palplot(sns.cubehelix_palette(8, start=.75, rot=.150))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 调用定制连续调色板
sns.palplot(sns.light_palette("green"))
sns.palplot(sns.dark_palette("green"))

在这里插入图片描述
在这里插入图片描述

3. 单变量分析绘图

from scipy import stats, integrate
x = np.random.normal(size=100)
# 自动设置轴
sns.histplot(x, kde=False)

在这里插入图片描述

# 指定bins大小
sns.histplot(x, bins=20, kde=False)

在这里插入图片描述

# 查看拟合曲线
sns.distplot(x, bins=20, kde=False, fit=stats.gamma)

在这里插入图片描述

分析特征和特征之间的联系:

import pandas as pd
mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])
# 自身分布情况+散点图
sns.jointplot(x="x", y="y", data=df)

在这里插入图片描述

# hex有区分度的散点图
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("white"):
	sns.jointplot(x=x, y=y, kind="hex", color="k")

在这里插入图片描述

4. 回归分析绘图

seaborn数据集可能会无法加载,自己去官方github把它下载下来:
seaborn-data
并把下载下来的文件放入user/name/文件夹下就可以直接load。

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

在这里插入图片描述

import random
sns.set(color_codes=True)
np,random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")
print(tips.head())
# 绘制双特征total_bill和tip回归关系
sns.regplot(x="total_bill", y="tip", data=tips)

在这里插入图片描述

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

在这里插入图片描述

# 加入抖动
sns.regplot(x="size", y="tip", data=tips, x_jitter=.05)

在这里插入图片描述

5. 多变量分析绘图

np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")
# 散点图total_bill随时间变化
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)

在这里插入图片描述

# 散点图total_bill随时间变化, 像一棵树
sns.swarmplot(x="day", y="total_bill", data=tips)

在这里插入图片描述

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

在这里插入图片描述

sns.boxplot(x="day", y="total_bill", hue="time", data=tips)

在这里插入图片描述

# 小提琴图
sns.violinplot(x="day", y="total_bill", hue="time", data=tips)

在这里插入图片描述

sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True)

在这里插入图片描述

6. 分类属性绘图


sns.barplot(x="sex", y="survived", hue="class", data=titanic)

在这里插入图片描述

sns.pointplot(x="sex", y="survived", hue="class", data=titanic)

在这里插入图片描述

sns.poiintplot(x="class", y="survived", hue="sex", data=titanic, palette={"male":"g", "female":"m"}, markers=["^", "o"], linestyles=["-", "--"])

在这里插入图片描述

# 默认折线图
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips)

在这里插入图片描述

# 条形图
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar")

在这里插入图片描述

7. facetgrid使用

g = sns.FacetGrid(tips, col="time")

在这里插入图片描述

g = sns.FacetGrid(tips, col="time")
g.map(plt.hist, "tip")

在这里插入图片描述

g = sns.FacetGrid(tips, col="sex", hue="smoker")
g.map(plt.scatter, "total_bill", "tip", alpha=.7)
g.add_legend()

在这里插入图片描述

with sns.axes_style("white"):
    g = sns.FacetGrid(tips, row="sex", col="smoker", margin_titles=True, size=2.5)
g.map(plt.scatter, "total_bill", "tip")
g.set_axis_labels("Total bill", "Tip")
g.set(xticks=[10, 30, 50], yticks=[2, 6, 10])
g.fig.subplots_adjust(wspace=.02, hspace=.02)

在这里插入图片描述

# 所有特征的对比
g = sns.PairGrid(iris, hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()

在这里插入图片描述

# 取其中某个两个特征的对比
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species")
g.map(plt.scatter)
g.add_legend()

在这里插入图片描述

8. 热度图绘制

sns.set()
uniform_data = np.random.rand(3, 3)
heatmap = sns.heatmap(uniform_data)

在这里插入图片描述

# 指定取值范围
heatmap = sns.heatmap(uniform_data, vmin=0.2, vmax=0.5)

在这里插入图片描述

# 指定中心值
heatmap = sns.heatmap(uniform_data, center=0)

在这里插入图片描述

# 指定特征
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
print(flights)
ax = sns.heatmap(flights)

在这里插入图片描述

# 显示格子的值
ax = sns.heatmap(flights, annot=True, fmt='d')

在这里插入图片描述

# 加间隔
ax = sns.heatmap(flights, linewidth=5)

在这里插入图片描述

# 换配色
ax = sns.heatmap(flights, cmap="Blues")

在这里插入图片描述

9. 实际操作记录

9.1 按特征列绘制直方分布图

一种是多图绘制的方式:

import pandas as pd
import seaborn as sns
import matplotlib as plt
# 取自制数据集,数据集为DataFrame结构
data = pd.read_csv("数据集路径")
# row选择要进行分类的类别列,一般是数据集的target,因为是要对数据集的特征分布进行查看
g = sns.FacetGrid(samples, row="label")
g.map(plt.hist, "要查看分布的特征列名", color='#68B88E')
g.fig.set_size_inches(13, 15)
sns.set(style='whitegrid', font_scale=1.5)
plt.show()

在这里插入图片描述

一种是单图绘制的方式:

sns.histplot(data=samples, x="framelayout_count", hue="label", multiple="layer")
plt.show()
plt.clf()

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值