Python数据可视化的例子 您所在的位置:网站首页 小提琴制作方法书籍 Python数据可视化的例子

Python数据可视化的例子

2024-07-13 22:05| 来源: 网络整理| 查看: 265

小提琴图是比较有意思的统计图形,它将数值型数据的核密度图与箱线图融合在一起,进而得到一个形似小提琴的图形。尽管matplotlib模块也提供了绘制小提琴图的函数violinplot,但是绘制出来的图形中并不包含一个完整的箱线图,所以本节将直接使用seaborn模块中的violinplot函数绘制小提琴图。首先,带领读者了解一下有关violinplot函数的语法和参数含义:

sns.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, dodge=True, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None) x:指定小提琴图的x轴数据。y:指定小提琴图的y轴数据。hue:指定一个分组变量。data:指定绘制小提琴图的数据集。order:传递一个字符串列表,用于分类变量的排序。hue_order:传递一个字符串列表,用于分类变量hue值的排序。bw:指定核密度估计的带宽,带宽越大,密度曲线越光滑。scale:用于调整小提琴图左右的宽度,如果为area,则表示每个小提琴图左右部分拥有相同的面积;如果为count,则表示根据样本数量来调节宽度;如果为width,则表示每个小提琴图左右两部分拥有相同的宽度。scale_hue:bool类型参数,当使用hue参数时,是否对hue变量的每个水平做标准化处理,默认为True。width:使用hue参数时,用于控制小提琴图的宽度。inner:指定小提琴图内部数据点的形态,如果为box,则表示绘制微型的箱线图;如果为quartiles,则表示绘制四分位的分布图;如果为point或stick,则表示绘制点或小竖条。split:bool类型参数,使用hue参数时,将小提琴图从中间分为两个不同的部分,默认为False。dodge:bool类型的参数,当使用hue参数时,是否绘制水平交错的小提琴图,默认为True。orient:指定小提琴图的呈现方向,默认为垂直方向。linewidth:指定小提琴图的所有线条宽度。color:指定小提琴图的颜色,该参数与palette参数一起使用时无效。palette:指定hue变量的区分色。saturation:指定颜色的透明度。ax:指定子图的位置。 接下来,以酒吧的消费数据为例(数据包含客户的消费金额、消费时间、打赏金额、客户性别、是否抽烟等字段): 在这里插入图片描述 利用如上介绍的函数绘制分组小提琴图,以帮助读者进一步了解参数的含义,绘图代码如下: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns #设置绘图风格 plt.style.use('ggplot') #处理中文乱码 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #坐标轴负号的处理 plt.rcParams['axes.unicode_minus']=False # 读取数据 tips = pd.read_excel(r'酒吧消费数据.xlsx') # 绘制分组小提琴图 sns.violinplot(x = "day", # 指定x轴的数据 y = "total_bill", # 指定y轴的数据 hue = "sex", # 指定分组变量 data = tips, # 指定绘图的数据集 order = ['Thur','Fri','Sat','Sun'], # 指定x轴刻度标签的顺序 scale = 'count', # 以男女客户数调节小提琴图左右的宽度 split = True, # 将小提琴图从中间割裂开,形成不同的密度曲线; palette = 'RdBu' # 指定不同性别对应的颜色(因为hue参数为设置为性别变量) ) # 添加图形标题 plt.title('每天不同性别客户的酒吧消费额情况') # 设置图例 plt.legend(loc = 'upper left', ncol = 2) # 显示图形 plt.show()

matplotlib命令与格式:图例legend语法及设置 在这里插入图片描述

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns #设置绘图风格 plt.style.use('ggplot') #处理中文乱码 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #坐标轴负号的处理 plt.rcParams['axes.unicode_minus']=False # 读取数据 tips = pd.read_excel(r'酒吧消费数据.xlsx') # 绘制分组小提琴图 sns.violinplot(x = "day", # 指定x轴的数据 y = "total_bill", # 指定y轴的数据 hue = "sex", # 指定分组变量 data = tips, # 指定绘图的数据集 order = ['Thur','Fri','Sat','Sun'], # 指定x轴刻度标签的顺序 scale = 'count', # 以男女客户数调节小提琴图左右的宽度 split = True, # 将小提琴图从中间割裂开,形成不同的密度曲线; palette = 'RdBu' # 指定不同性别对应的颜色(因为hue参数为设置为性别变量) ) # 添加图形标题 plt.title('每天不同性别客户的酒吧消费额情况') # 设置图例 plt.legend(loc = 'upper right', ncol = 2) #控制横纵坐标的值域 plt.axis([-1,4,-10,70]) # 显示图形 plt.show()

在这里插入图片描述

如图所示,得到了分组的小提琴图,我们会发现,小提琴图的左右两边并不对称,是因为同时使用了hue参数和split参数,两边的核密度图代表了不同性别客户的消费额分布。从这张图中,一共可以反映四个维度的信息,y轴表示客户的消费额、x轴表示客户的消费时间、颜色图例表示客户的性别、左右核密度图的宽度代表了样本量。以周五和周六两天为例,周五的男女客户数量差异不大,而周六男性客户要比女性客户多得多,那是因为右半边的核密度图更宽一些。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有