Seaborn可视化从入门到精通:风格设置、调色板与常用图表详解

0 阅读4分钟

Seaborn可视化

Seaborn的介绍

简介

​  Seaborn 是以 matplotlib为底层,更容易定制化作图的Python库。官网seaborn.pydata.org/

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

  matplotlib就能制作具有更多特色的图,换句话说, matplotlib 更加灵活,可定制化,而 Seaborn像是更高级的封装,使用方便快捷。

  应该把 Seaborn 视为 matplotlib 的补充,而不是替代物。

安装

pip install seaborn

示例:seaborn简单使用

import matplotlib.pyplot as plt
import seaborn as sns

sns.set()
plt.plot([1,5,10],[1,3,5])
plt.show()

加载数据集

load_dataset()

  seaborn默认提供了数据集,方便测试图表的使用

import seaborn as san

sns.load_dataset('tips')

sns.get_data_home()

风格设置

​  除了各种绘图方式外,图形的美观程度可能是我们最关心的了。将它放到第一部分,因为风格设置是一些通用性的操作,对于各种绘图方法都适用。

Seaborn 支持的风格有5种:

  • darkgrid 黑背景-白格
  • whitegrid 白背景-白格
  • dark 黑背景
  • white 白背景
  • ticks

设置风格的方法

  • set(style='')

  • set_style(value) 统一设置

  • axes_style(value) 单一设置

import seaborn as sns
from matplotlib import pyplot as plt

# 支持直接修改matplotlib的样式
#设置风格
#设置风格,使用set_style()函数设置后,后面的图都会使用该风格
sns.set_style('whitegrid')
#绘图
plt.plot([1,2,3],[4,5,6])

data = sns.load_dataset('tips')

# 5种样式
sns.set_style('whitegrid')
sns.barplot(data=data,x='sex',y='size')

sns.set_style("white")
sns.barplot(data=data,x='sex',y='size')

sns.set_style("darkgrid")
sns.barplot(data=data,x='sex',y='size')

sns.set_style("dark")
sns.barplot(data=data,x='sex',y='size')

sns.set_style("ticks")
sns.barplot(data=data,x='sex',y='size')

# set方法实现
sns.set(style='whitegrid')
sns.barplot(data=data,x='sex',y='size')

# 单独设置
with sns.axes_style('darkgrid'):    #临时设置风格
    sns.barplot(data=data,x='sex',y='size')

调色板

  颜色比图形样式的其他方面更重要,因为如果有效使用颜色可以更凸显示数据的结果与重要

  Seaborn可以轻松选择和使用适合您正在使用的数据类型的调色板以及您可视化的目标

支持的方法

  • color_palette() 能传入任何Matplotlib所支持的颜色
  • color_palette() 不写参数则,默认颜色 deep, muted, pastel, bright, dark, colorblind
  • color_palette() ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
  • light_palette()
  • dark_palette()
  • set_palette()设置所有图的颜色

调色板

import seaborn as sns

#获取默认调色板
sns.color_palette()

image

sns.color_palette('deep')   #seaborn支持的颜色,10个色块

image 连续的调色板

sns.color_palette('deep',6) #6种颜色

sns.color_palette('Reds')   #matplotlib支持的颜色

sns.color_palette('Reds_r')   #matplotlib支持的颜色,r表示reverse

image

自定义连续调色板

sns.palplot(sns.light_palette('green'))

sns.palplot(sns.dark_palette('purple'))

image

xkcd_rgb 颜色

  从xkcd_rgb这产生了一组颜色xkcd.com/color/rgb/,…

sns.xkcd_palette(['purple','dark pink','algae','spring green','greyish blue'])

image

色板的应用

#设置到matplotlib
from matplotlib import pyplot as plt

#plt.plot([1,3,2,4,5,],[1,9,4,16,25],color=sns.color_palette('husl')[2])
plt.bar([1,3,2,4,5,],[1,9,4,16,25],color=sns.color_palette('husl',5))

#设置到seaborn
sns.barplot(x=[1,2,3,4,5],y=[1,4,9,16,25],
            palette=sns.color_palette('husl',5),hue=[1,2,3,4,5],legend=False
            )

image image

柱状图

常见方法

  • barplot方法 单独绘制条形图
  • catplot方法 可以条形图、散点图、盒图、小提亲图、等
  • countplot方法 统计数量

常规条图

import seaborn as sns

#加载数据表
tips = sns.load_dataset("tips")

#常规数据表
sns.barplot(data=tips,x='day',y='total_bill') 

横向条图

import seaborn as sns

# 示例数据
tips = sns.load_dataset("tips")

#横向条图
sns.barplot(data=tips,x='total_bill',y='day')

分组条图

import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
#分组条图
sns.barplot(data=tips,x="day", y="total_bill", hue="sex")

设置颜色

import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")

#设置颜色
sns.barplot(data=tips,x="day", y="total_bill", color="blue")#color适用与单色

#设置颜色
sns.barplot(data=tips,x="day", y="total_bill", 
            hue="sex",palette='dark:salmon')	#如果是多色,使用palette参数

统计数量

import seaborn as sns

tips.groupby('day').count()

直方图

方法

  • histplot方法 绘制单变量或双变量直方图来显示数据集的分布
  • displot方法 绘制直方图、核密度图。可以比较多个变量分布情况

常规

import seaborn as sns

# 示例数据
tips = sns.load_dataset("tips")

#统计单个指标的频数
sns.histplot(tips['total_bill'])
sns.displot(tips['total_bill'])

额外设置

额外的设置
#直方图+ KDE核密度估计
# 核密度估计的作用是用来估计概率密度函数的,它可以用来描述随机变量的密度分布
#	一
sns.displot(data=tips,x='total_bill',kde=True)
#	二
sns.histplot(data=tips,x='total_bill',kde=True)

#设置分组
#	一
sns.histplot(data=tips,x='total_bill',kde=True,bins=10)
#	二
sns.displot(data=tips,x='total_bill',kde=True,bins=10)

#设置多组
sns.histplot(data=tips,x='total_bill',kde=True,hue='sex')
sns.displot(data=tips,x='total_bill',kde=True,hue='sex')

#设置多组显示的方式
#layer:默认值,将多组数据叠加在一起
sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='layer')

#dodge:将多组数据分开显示
sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='dodge')

#stack:将多组数据堆叠显示
sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='stack')

#fill:以百分比堆叠的形式展示
sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='fill')

# 定制直方图
sns.displot(data=tips,x='total_bill',kde=True,
            color='skyblue',edgecolor='black',
            linewidth=1)