分布数据可视化 - 分布图
boxplot() / violinplot() / lvplot()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#设置风格、尺度
sns.set_style("whitegrid")
sns.set_context("paper")
#屏蔽警告
import warnings
warnings.filterwarnings('ignore')
1.箱型图:boxplot()
# 加载数据
tips = sns.load_dataset('tips')
# 绘制箱型图
sns.boxplot(x='day', y='total_bill', data=tips,
linewidth=2, #线宽
width=0.8, # 箱之间的间隔比例
fliersize=3, # 异常点大小
palette='hls', # 设置调色板
whis=1.5, # 设置IQR
notch=False, # 设置是否以中值做凹槽
order=['Thur', 'Fri', 'Sat', 'Sun'] # 筛选类别
)
# 可以添加散点图
sns.swarmplot(x='day', y='total_bill', data=tips, color='k', size=3, alpha=0.8)
通过hue参数再分类
# 绘制箱型图
sns.boxplot(x='day', y='total_bill', data=tips, hue='smoker', palette='Reds')
# 可以添加散点图
sns.swarmplot(x='day', y='total_bill', data=tips, color='k', size=3, alpha=0.8)
小提琴图:violinplot()
# 用法和boxplit类似
sns.violinplot(x='day', y='total_bill', data=tips,
linewidth=2, # 线宽
width=0.8, # 箱之间的间隔比例
palette='hls', # 设置调色板
order=['Thur', 'Fri', 'Sat', 'Sun'], # 筛选类别
scale='area', # 测度小提琴的宽度:area-面积相同,count-按照样本数量决定宽度,width-宽度一样
gridsize=50, # 设置小提琴边线的平滑度,越高越平滑,一般可以不设置
inner='box', # 设置内部显示类型 -> box, quartile, point, stick, None
# bw=0.8 # 控制拟合程度,一般可以不设置
)
通过hue参数再分类
sns.violinplot(x='day', y='total_bill', data=tips, hue='smoker', palette='muted', split=True, # 设置是否拆分小提琴图
inner='quartile')
结合散点图
sns.violinplot(x='day', y='total_bill', data=tips, palette='hls',inner=None)
# 插入散点图
sns.swarmplot(x='day', y='total_bill', data=tips,color='w', alpha=0.5 )
LV图表:lvplot()
# 绘制LV图
sns.lvplot(x='day', y='total_bill', data=tips, palette='mako',
width=0.8,
linewidth=12,
scale='area', # 设置框的大小 -> linear、exonential、area
k_depth='proportion' # 设置框的数量 -> proportion、tukey、trustworthy
)
# 可以添加散点图
sns.swarmplot(x='day', y='total_bill', data=tips, color='k', size=3, alpha=0.8)