天天看点

python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

分类数据可视化 - 分布图(箱型图,小提琴图,LV图)

boxplot() / violinplot() / lvplot()

1. boxplot()

#绘制箱型图

import seaborn as sns
#导入数据
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 = True,   #设置是否以中值做凹槽
            order = {'Thur','Fri','Sat','Sun'}, #筛选类别
            )
#可以添加散点图
sns.swarmplot(x = 'day', y = 'total_bill', data = tips, color = 'k', size = 3, alpha = 0.8)      
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

#通过参数再分类

#通过参数再分类
sns.boxplot(x = 'day', y = 'total_bill', data = tips,
            hue = 'smoker', palette = 'Reds')      
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

2. violinplot()

# 小提琴图

示例1:

sns.violinplot(x = 'day', y = 'total_bill', data = tips,
               linewidth = 2, #线宽
               width = 0.8,   #箱之间的间隔比例
               palette = 'hls', #设置调色板
               order = {'Thur', 'Fri', 'Sat','Sun'}, #筛选类别
               scale = 'count',  #测度小提琴图的宽度: area-面积相同,count-按照样本数量决定宽度,width-宽度一样
               gridsize = 50, #设置小提琴图的平滑度,越高越平滑
               inner = 'box', #设置内部显示类型 --> 'box','quartile','point','stick',None
               #bw = 0.8      #控制拟合程度,一般可以不设置
               )      
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

示例2:通过hue再分类

#通过hue参数再分类
sns.violinplot(x = 'day', y = 'total_bill', data = tips,
               hue = 'smoker', palette = 'muted',
               split = True, #设置是否拆分小提琴图
               inner = 'quartile')      
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

示例3:结合散点图

#插入散点图
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 = .5)      
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()

3.lvplot()

#LV图表

#绘制LV图
sns.lvplot(x = 'day', y = 'total_bill', data = tips, palette = 'mako',
           #hue = 'smoker',
           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)
       
python可视化进阶---seaborn1.6 分类数据可视化 - 分布图 boxplot() / violinplot() / lvplot()