用Python编程语言绘制琴形图的教程

575 阅读3分钟

琴形图是箱形图和核心密度图的交叉,显示数据的峰值。它被用来显示数字数据的分布情况。与只能提供汇总统计数据的箱形图相反,小提琴图显示汇总统计数据和每个变量的密度。

小提琴图用于检查数字数据的分布情况,对于比较不同群体的分布情况特别有效。每组密度曲线的峰值、谷值和尾部都可以进行比较,以确定各组的相似之处和不同之处。

Violin Plot Demonstration

小提琴图的演示

为什么要使用小提琴图的原因?

  1. 小提琴图类似于箱形图和密度图,但更胜一筹!
  2. 小提琴图在审美上很有吸引力。
  3. 即使你的数据不遵循正态分布,小提琴图也完全可以接受。它们在可视化定量和定性数据方面都很有效。
  4. 阅读小提琴形状类似于阅读密度图:较厚的部分表示小提琴上该区域的数值具有较大的频率。相比之下,较薄的部分表示频率较低。

在Python中绘制小提琴曲线图

在跳到代码实现之前,让我们先看看Python中可以用来实现小提琴图的库。


可用于制作小提琴图的Python库

Seaborn

Seaborn是在Matplotlib之上开发的,Matplotlib是Python的基本可视化工具包。它应该是一个补充,而不是替代。另一方面,Seaborn有几个极为关键的特征。

Matplotlib

Matploitlib是一个用于绘图的Python库。它提供了面向对象的API,用于将绘图集成到程序中。它是一个跨平台的工具包,用于从数组数据中创建2D图表。它提供了一个面向对象的API,用于在基于Python GUI工具箱的应用程序中嵌入图表。

Plotly

Python Plotly Toolkit是一个开源的库,可能很容易实现数据的可视化和理解。Plotly提供了多种绘图类型,如线形图、散点图、直方图、考克斯图等。


使用Seaborn库实现小提琴图的可视化

下面显示的第一段代码显示了如何在Seaborn中创建一个水平小提琴图。我们正在利用seaborn库中的 tips数据集。我们将 "总账单 " 列发送到sns.violinplot() 方法,并利用调色板使其变成 绿色

import seaborn as sns
sns.set_theme(style="whitegrid")
T  = sns.load_dataset("tips")
Ax = sns.violinplot(x=T["total_bill"], palette="Greens")

Violin Plot Seaborn 1

Violin Plot Seaborn 1

第二段代码演示了如何将两个变量结合起来以创建一个垂直的小提琴图。我们为可视化传递数据,并将调色板作为 "冷暖"。

Ax = sns.violinplot(x="day", y="total_bill", data=T, palette="coolwarm")

Violin Plot Seaborn 2

小提琴图Seaborn 2


使用Matplotlib库实现小提琴图的可视化

为了使用matplotlib绘制小提琴图,我们将创建一个正态分布,并将数据与小提琴图的其他一些属性一起传递给plt.violinplot

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
D1 = np.random.normal(100, 10, 200)
D2 = np.random.normal(80, 30, 200)
data_to_plot = [D1, D2,]
fig = plt.figure()
plt.violinplot(data_to_plot,showmeans=True, showextrema=True, showmedians=True)
plt.show()

Violin Plot Matplotlib

小提琴图Matplotlib


使用Plotly库实现小提琴图的可视化

小提琴图是使用提示数据集绘制的,在下面提到的代码中进行了演示。

import plotly.express as px

df = px.data.tips()
fig = px.violin(df, y="total_bill")
fig.show()

Violin Plot Plotly

小提琴图 Plotly


总结

祝贺你!你刚刚学会了如何用Python编程语言绘制小提琴图。希望你喜欢它!😇