可视化神器Plotly玩转小提琴图
在之前的Plotly文章中已经介绍过如何制作柱状图、散点图、饼图、箱型图等,本文介绍如何利用Plotly来绘制小提琴🎻图,基于两种方法:
- 基于plotly_express
- 基于plotly.graph_objects
小提琴图
看下实际绘制的小提琴图效果:
那究竟什么是小提琴图?
小提琴图(Violin Plot)是一种用来显示数据分布和概率密度的图形。
一个学习可视化图形的网站:https://datavizcatalogue.com/。
它结合了之前介绍的箱型图和密度图的双重特征,能够用来显示数据的分布形状。
- 中间黑色粗条:表示四分位数的范围
- 中间白点:表示中位数
- 延伸的细黑线:代表95%的置信区间
Plotly系列
Plotly的文章会形成连载系列,前面10篇Plotly可视化文章分别是:
- 酷炫!36张图爱上高级可视化神器Plotly_Express
- Plotly玩转散点图
- Plotly玩转饼图
- Plotly玩转漏斗图
- Plotly玩转柱状图
- Plotly玩转气泡图
- Plotly玩转股票图
- Plotly玩转甘特图
- Plotly玩转箱型图
- Plotly玩转面积图
导入库、数据
先导入需要的库:
1 | import numpy as np |
本文中使用的pandas中自带的消费数据:
1 | # 采用的是消费数据tips |
基于点的小提琴图
首先绘制的是基于数据点的小提琴图:
1 | fig = px.strip( |
根据4个day的取值来分别绘制小提琴图:
基于Plotly_Express实现
基础小提琴图
1 | fig = px.violin(tips,y="total_bill") # 使用total_bill数据 |
换了一份数据再绘图:
1 | fig = px.violin(tips,y="tip") # 使用的是小费tip |
带数据点的小提琴图
上面的图形是没有数据点的,下面是将数据点也显示在提琴图的旁边,参数是points:
1 | fig = px.violin( |
这个案例中没有离群点,所以points=outliers或者False,结果是相同的:
分组小提琴图
通过字段的不同取值来分别绘制不同的小提琴图:
1 | fig = px.violin( |
覆盖型、分组型小提琴图
两种不同的图形主要是通过小提琴的模式来决定的,使用的参数是violinmode:
1 | fig = px.violin( |
1 | fig = px.violin( |
基于go.Violin实现
基础小提琴图
1 | fig = go.Figure(data=go.Violin( |
多个小提琴图
在一个画布中同时绘制多个小提琴图。在消费数据tips中的day字段有4个不同的取值:
通过一个for循环来遍历实现4个图形的绘制:
1 | fig1 = go.Figure() # 生成一个Figure对象 |
分组小提琴图
1 | fig2 = go.Figure() |
正负形小提琴图
在小提琴图中我们可以看到它是有两个部分组成的,分为negative和positive,取值不同会呈现不同的图形:
1 | import plotly.graph_objects as go |
高级小提琴图
介绍两个官网中的高级小提琴图的例子:
1 | import plotly.graph_objects as go |
另一个是绘制Ridgeline(脊型) Plots图形的例子,当做欣赏:
1 | import plotly.graph_objects as go |