30.seaborn基础入门,一篇文章搞懂常用的seaborn图的使用

1.seaborn介绍

Seaborn是以matplotlib为底层,更容易定制化作图的Python库
Seaborn官网:Seaborn官网
Seaborn是对matplotlib的基础上进行更高级的封装,作图更加容易。matplotlib更加灵活,可以定制化,而seaborn像是更高级的封装,使用更加快捷方便。
seaborn安装
pip install seaborn==0.11.2 #最稳定的版本

2.风格设置

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
y = np.random.randint(50, 100, 20)
x = range(20)
# ["white", "dark", "whitegrid", "darkgrid", "ticks"]
# set_style(value) 统一设置风格
sns.set_style('white')# 白背景
plt.subplot(231)
plt.plot(x,y)

sns.set_style('dark')# 黑背景
plt.subplot(232)
plt.plot(x,y)

sns.set_style('whitegrid')# 白背景-白格
plt.subplot(233)
plt.plot(x,y)

sns.set_style('darkgrid')# 黑背景-白格
plt.subplot(234)
plt.plot(x,y)

sns.set_style('ticks')# 白背景-数据存在锯齿
plt.subplot(235)
plt.plot(x,y)

在这里插入图片描述

# axes_style(value)单一设置风格
with sns.axes_style('dark'):
    plt.plot(x,y)

在这里插入图片描述

# %%
# 移除轴脊柱,white和ticks两个风格都能够移除顶部和右侧的不必要的轴脊柱,
# 只能通过seaborn来移除
plt.subplot(222)
sns.set_style('ticks')
plt.plot(x,y)
# 移除轴脊柱要在填充数据plot之后,显示图标之前
sns.despine()

在这里插入图片描述

3.seaborn图像风格管理

seaborn调整线条粗细方法

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 四个预设上下文中,在相对大小的顺序是paper、notebook、talk、poster。
# 该notebook是默认的
x = range(10)
y = np.random.randint(10,100,10)
plt.subplot(231)
sns.set_context('paper')
plt.plot(x,y)

plt.subplot(232)
sns.set_context('notebook')
plt.plot(x,y)

plt.subplot(233)
sns.set_context('talk')
plt.plot(x,y)

plt.subplot(234)
sns.set_context('poster')
plt.plot(x,y)

在这里插入图片描述

# %%
# 方法2:使用set,set中可以修改很多图例的大小粗细,具体参考文档
# 修改线条粗细
sns.set(rc={'lines.linewidth':5})
plt.plot(x,y)

在这里插入图片描述

4.seaborn调色板

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制调色板
sns.palplot(sns.color_palette())
# 指定matplotlib中的颜色
sns.palplot(sns.color_palette('Reds'))# 指定颜色的由浅到深
sns.palplot(sns.color_palette('Reds_r'))# 指定颜色的由深到浅

# 常用参数deep, muted, pastel, bright, dark, colorblind(圆形颜色系统)
sns.palplot(sns.color_palette('colorblind'))
sns.palplot(sns.color_palette('dark'))

# 指定颜色,自定义色板
sns.palplot(sns.color_palette(["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]))

# 自定义连续色版
sns.palplot(sns.light_palette('red'))
sns.palplot(sns.dark_palette('red'))

# 指定色板个数
sns.palplot(sns.color_palette(sns.color_palette('husl',n_colors=15)))

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

5.seaborn调色板的使用

#%%
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 获取单个颜色,设置线段颜色
plt.plot([1,2],[2,4],sns.xkcd_rgb['apple green'],lw=5)# lw是指定线条宽度
# %%

在这里插入图片描述

# 获取多个颜色,对条形图进行颜色填充
x = range(5,10)
# 填充一种颜色的深浅
plt.bar(x,x,color=sns.light_palette('green'))
# plt.bar(x,x,color=sns.color_palette([]))也可以根据指定的颜色编码进行自定义填充

在这里插入图片描述

data = np.random.normal(size=(20,8))+np.arange(8)/2
sns.barplot(data=data, palette=sns.color_palette('hls'))

在这里插入图片描述

6.seaborn绘制直方图

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
x = np.random.normal(size=100)
# 设置样式风格
sns.set(style='white')
# 绘制直方图,bins设置组数 kde是否显示数据分布曲线
sns.displot(x,bins=20,kde=True)

在这里插入图片描述

7.seaborn加载数据——加载泰坦尼克号数据

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
print(sns.get_data_home())# 查看数据所在的目录
titanic = sns.load_dataset('titanic')
titanic

在这里插入图片描述

8.seaborn绘制条形图

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
titanic = sns.load_dataset('titanic')
# 绘制男女存活人数条形图,xy是横轴与纵轴(数据集的参数),data是数据集
sns.barplot(x='sex',y='survived',data=titanic)

# 绘制分组条形图:在以上的基础,对船舱进行分组
sns.barplot(x='sex',y='survived',data=titanic,hue='class')

在这里插入图片描述

在这里插入图片描述

9.seaborn绘制盒图

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# 绘制盒须图:日期与消费之间的关系:hue是分组
sns.boxplot(x='day', y='total_bill', data=tips, hue='time')

在这里插入图片描述

10.seaborn绘制小提琴图

小提琴图代表数据越密集,用于展示数据的分布情况
在这里插入图片描述

import seaborn as sns
# seaborn导入数据
tips = sns.load_dataset('tips')
sns.violinplot(x='day', y='total_bill', data=tips)

在这里插入图片描述

# 绘制小提琴图(按照性别分组)
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex')

在这里插入图片描述

# 合并分组图
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True)

在这里插入图片描述

# 去掉中间四分点
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True,inner=None)

在这里插入图片描述

11.seaborn绘制分布散点图和分簇散点图

import seaborn as sns
tips = sns.load_dataset('tips')
# 绘制分布散点图 stripplot()
sns.stripplot(x='day', y='total_bill', data=tips)

在这里插入图片描述

#jitter控制是否震动(集中在一条直线)默认是True
sns.stripplot(x='day', y='total_bill', data=tips, jitter=False)

在这里插入图片描述

# swarmplot分簇散点图
sns.swarmplot(x='day',y='total_bill',data=tips)

在这里插入图片描述

# swarmplot分簇散点图: 按照性别分组
sns.swarmplot(x='day',y='total_bill',data=tips, hue='sex')

在这里插入图片描述

# swarmplot分簇散点图: 按照时间分组
sns.swarmplot(x='day',y='total_bill',data=tips, hue='time')

在这里插入图片描述

# swarmplot分簇散点图: 指定颜色和透明度
sns.swarmplot(x='day',y='total_bill',data=tips, color='k', alpha=0.2)

在这里插入图片描述

12.seaborn绘制散点图

import seaborn as sns
tips = sns.load_dataset('tips')
sns.scatterplot(data=tips,x='total_bill',y='tip')

在这里插入图片描述

# size指定散点中点的大小
sns.scatterplot(data=tips,x='total_bill',y='tip',size='size')

在这里插入图片描述

# hue按照是否吸烟进行分组
sns.scatterplot(data=tips, x='total_bill',y='tip',size='size',hue='smoker')

在这里插入图片描述

# 设置风格,利用风格分组
sns.scatterplot(data=tips, x='total_bill',y='tip',size='size',hue='smoker',style='time')

在这里插入图片描述

13.seaborn绘制双轴密度图

双轴密度图主要是用于观察数据分布的情况

# 导入模块
import numpy as np
import pandas as pd
import seaborn as sns
# 生成数据
# 生成 多元高斯正态分布 的数据
# 多元高斯正态分布是一堆正太分布向更多维度的推广,这种分布由其均值和协方差矩阵来确定
data = np.random.multivariate_normal([0,1], [(1,0.5),(0.5,1)], 1000)# 均值 协方差对称矩阵
df = pd.DataFrame(data, columns=['x','y'])
# 绘制密度图
sns.kdeplot(x='x',y='y',data=df)

在这里插入图片描述

# 填充区域中的颜色shade
sns.kdeplot(x='x',y='y',data=df,shade=True)

在这里插入图片描述

# color指定颜色
sns.kdeplot(x='x',y='y',data=df,shade=True,color='red')

在这里插入图片描述

14.seaborn绘制联合图

包含x和y的散点图,x和y分别的分布状态

# 导入模块
import numpy as np
import pandas as pd
import seaborn as sns
# 生成数据
# 生成 多元高斯正态分布 的数据
# 多元高斯正态分布是一堆正太分布向更多维度的推广,这种分布由其均值和协方差矩阵来确定
data = np.random.multivariate_normal([0,1], [(1,0.5),(0.5,1)], 1000)# 均值 协方差对称矩阵
df = pd.DataFrame(data, columns=['x','y'])
# 指定中间图的类型
# kind scatter散点图(默认) kde双轴密度图 hist直方图 hex六边形 reg回归散点图 resid
sns.jointplot(data=df, x='x', y='y', kind='scatter')

在这里插入图片描述

sns.jointplot(data=df, x='x', y='y', kind='kde',shade=True)

在这里插入图片描述

sns.jointplot(data=df, x='x', y='y', kind='reg')

在这里插入图片描述

# 指定颜色
sns.jointplot(data=df, x='x', y='y', kind='scatter',color='k')

在这里插入图片描述

15.seaborn绘制点图

很类似于条形图,可以很好的观察两者或多者之间的变化问题(性别)

import seaborn as sns
titanic = sns.load_dataset('titanic')
# 绘制点图: 绘制不同性别的存货情况,根据船舱进行分类
# hue 进行分组
sns.pointplot(data=titanic, x='sex',y='survived', hue='class')

在这里插入图片描述

# 不同船舱的存活情况, hue根据性别分类
# 对颜色进行指定palette
# markers:指定点的形状
# linestyles:指定线的样式
sns.pointplot(data=titanic, x='class', y='survived',hue='sex',palette={'male':'g','female':'m'},markers=['^','o'],linestyles=['-','--'])

在这里插入图片描述

16.seaborn绘制热力图

热力图(heatmap)是以矩阵的形式表示,数据值在图形中以颜色的深浅来标识数量的多少,并可以快速找到最大值和最小值位置。在机器学习的分类中经常用来作混淆矩阵的比较。

import seaborn as sns
import numpy as np
data = np.random.randn(3,3)
sns.heatmap(data=data)

在这里插入图片描述

# vmin,vmax指定最大值颜色最小值颜色。缩小颜色范围
sns.heatmap(data=data,vmin=0.2,vmax=0.5)

在这里插入图片描述

# 加载航班数据
flights = sns.load_dataset('flights')
flights

在这里插入图片描述

# 使用pivot(DataFrame中一个函数)处理数据成二维表的格式,使用热力图必须操作成二维格式
data = flights.pivot('month','year','passengers')
data

在这里插入图片描述

# 绘制热力图
# annot:显示具体数值到每个位置中
# fmt:以整数形式显示
# linewidths:每个单元格中添加缝隙
# cbar:设置为False时,去掉图例
# cmap:修改色系
sns.heatmap(data=data, annot=True, fmt='d', linewidths=0.5,cbar=True, cmap='YlGnBu')

在这里插入图片描述

17.seaborn绘制散布图矩阵

pairplot该函数会同时绘制数据中所有特征两两之间的关系图

import seaborn as sns
import matplotlib.pyplot as plt
# 加载鸢尾花数据
iris = sns.load_dataset('iris')
sns.pairplot(iris)

在这里插入图片描述

# hue:添加分类,分类出不同种类的花瓣
# kind:指定图的类型kind : {'scatter', 'kde', 'hist', 'reg'}
sns.pairplot(data=iris, hue='species',kind='kde')

在这里插入图片描述

18.seaborn绘制线型图

import seaborn as sns
iris = sns.load_dataset('iris')
# 绘制线型图
# hue:分类
sns.lineplot(x='sepal_length',y='sepal_width',data=iris,hue='species')

在这里插入图片描述

# 加载小费数据
# size:指定粗细(其实也是分类的一种)
# style:指定线得格式(其实也是分类的一种)
tips = sns.load_dataset('tips')
sns.lineplot(x='total_bill',y='tip',data=tips,hue='sex',size='smoker',style='time')

在这里插入图片描述

19.seaborn绘制线性回归图

线性回归图:根据大量数据找到模拟线性回归线

  • sns.lmplot() 功能多,规范多
  • sns.regplot()推荐,支持的参数与数据类型比较多一些
import seaborn as sns
iris = sns.load_dataset('iris')
tips = sns.load_dataset('tips')
sns.regplot(data=iris,x='petal_length',y='petal_width')

在这里插入图片描述

sns.lmplot(data=iris,x='petal_length',y='petal_width')

在这里插入图片描述

20.seaborn中catplot绘制网格图

import seaborn as sns
tips = sns.load_dataset('tips')
# catplot分类
# kind:指定类型("strip"默认散点图, "swarm"分簇散点图, "box"盒须图, "violin"小提琴图,"boxen"箱型图(类似盒须), "point"(点图), "bar"(柱状图), or "count".)
sns.catplot(data=tips,x='day',y='total_bill',kind='violin')

在这里插入图片描述

# col,row:横或竖进行分类
sns.catplot(data=tips,x='day',y='total_bill',kind='violin',col='sex')

在这里插入图片描述

# col,row:横或竖进行分类
# hue:分组
sns.catplot(data=tips,x='day',y='total_bill',row='sex',col='time',hue='smoker')

在这里插入图片描述

21.seaborn中FacetGrid绘制网格图

当想把数据中的多个子集展示出来时候,就可以使用FacetGrid,步骤如下

  1. 绘画区域
  2. 使用方法绘画数据
    FacetGrid常用参数:
  • height 高
  • aspect 宽
  • palette 色板
  • col 分图属性(列)
  • row 分图属性(行)
  • hue 分类属性
  • margin_titles 设置标题显示方式(默认单个显示,这个设置成分组)
  • row_order 显示分图数据
  • hue_kws 显示图标记的形状
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# 绘画区域:分类
g = sns.FacetGrid(data=tips, col='sex')
# 绘制具体数据
g.map(plt.hist, 'total_bill')

在这里插入图片描述

# 网格图中绘制散点图
# hue进行分组
# alpha防止散点覆盖,添加透明度
# palette设置颜色
# hue_kws设置显示的点形状
# s修改散点大小
# edgecolor、linewidth修改图形边颜色,边的宽度
# subplots_adjust设置子图之间距离
# set_axis_labels修改横竖轴标签
# height、aspect修改画布大小
# xticks、yticks修改x和y的刻度
g = sns.FacetGrid(data=tips, col='sex', row='time',hue='smoker',margin_titles=True,palette={'Yes':'g','No':'b'},
                  hue_kws={'marker':['^','o']},height=2, aspect=2)
g.map(plt.scatter, 'total_bill', 'tip',alpha=0.5,s=10,edgecolor='blue',linewidth=1)
g.fig.subplots_adjust(wspace=1,hspace=1)
g.set_axis_labels('total','t')
g.set(xticks=range(0,60,10),yticks=range(0,20,2))
# 添加图例
g.add_legend()

在这里插入图片描述

# 绘制回归分析图
# fit_reg 是否给出回归线
# x_jitter 抖动
g = sns.FacetGrid(data=tips, row='smoker', col='time', margin_titles=True)
g.map(sns.regplot, 'size', 'total_bill', fit_reg=True, x_jitter=0.2)

在这里插入图片描述

# 绘制条形图
g = sns.FacetGrid(data=tips, col='day', size=5)
g.map(sns.barplot, 'sex', 'total_bill')

在这里插入图片描述

# 绘制盒须图
# row_order  col_order指定排序方式
from pandas import Categorical
order_day = Categorical(['Sun','Sat','Thur','Fri'])
g = sns.FacetGrid(data=tips, col='day', size=5, col_order=order_day)
g.map(sns.boxplot, 'sex', 'total_bill')

在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值