使用 Python 中的 Altair 绘制带抖动的水平条形图


数据分析中最关键的方面之一是熟练地可视化数据,以便快速识别趋势和模式,而使用带抖动的水平条形图是可视化分类变量和连续变量的一种非常有效的工具。

我们的文章将演示如何使用 Altair(一个因其声明式统计可视化功能而闻名的流行 Python 库)创建带抖动的水平条形图。

什么是条形图和抖动?

条形图以水平方式显示各个数据点,使我们能够观察它们在不同类别中的分布。但是,当多个数据点共享相同水平位置时,它们可能会重叠,从而难以区分各个点。抖动是一种技术,它会在每个点的水平位置添加少量随机噪声,将其分散并减少重叠。

首先,必须确保在指定的 Python 环境中安装了 Altair 和 Pandas。我们可以使用 pip(一个通用的 Python 包管理器)来安装这些 Python 库。

先决条件

pip install altair pandas

我们还需要一个数据集来处理。在本教程中,我们将使用 Seaborn 库中的“tips”数据集,其中包含餐厅顾客的总账单和小费金额信息,以及其他变量,例如一周中的日期和顾客的性别。

使用 Altair 创建带抖动的水平条形图

一旦我们准备好了先决条件,就可以开始使用 Altair 创建带抖动的水平条形图。

按照以下步骤使用 Altair 创建带抖动的水平条形图:

步骤 1:安装 Altair

在开始之前,请确保已在 Python 环境中安装了 Altair。如果没有,可以在终端中运行以下命令进行安装:

pip install altair

步骤 2:导入必要的库

在 Python 脚本或 Jupyter Notebook 中,导入所需的库:Altair 和 pandas。

import altair as alt
import pandas as pd

步骤 3:加载数据

将数据集加载到 pandas DataFrame 中。例如,可以使用 pd.read_csv() 加载 CSV 文件:

data = pd.read_csv("your_dataset.csv")

步骤 4:创建带抖动的水平条形图

使用 Altair 创建带抖动的水平条形图。指定数据源、标记类型、编码和其他绘图属性:

chart = alt.Chart(data).mark_circle(size=40, opacity=0.8).encode(
   x=alt.X('continuous_variable:Q', title='X-axis Label'),
   y=alt.Y('categorical_variable:O', title='Y-axis Label'),
   color=alt.Color('group_variable:N', legend=alt.Legend(title='Group')),
   tooltip=['continuous_variable', 'categorical_variable', 'group_variable']
).properties(
   title='Horizontal Stripplot with Jitter',
   width=600,
   height=300
).configure_axis(
   labelFontSize=12,
   titleFontSize=14
).configure_legend(
   labelFontSize=12,
   titleFontSize=14

将“continuous_variable”、“categorical_variable”和“group_variable”替换为数据集中相应的列名。根据需要调整标记类型、大小、不透明度和其他属性。

步骤 5:显示或保存绘图

可以在 Jupyter Notebook 中直接显示绘图,也可以将其另存为图像或 HTML 文件。要在笔记本中显示绘图,请使用:

chart.show()

要将绘图另存为图像,请使用 .save() 并指定带有所需格式的文件名(例如,“plot.png”):

chart.save('plot.png')

或者,可以使用 .save() 将绘图保存为交互式 HTML 文件:

chart.save('plot.html')

以下是使用 Altair 在 Python 中使用 tips 数据集绘制带抖动的水平条形图的完整代码。

示例

import altair as alt
import pandas as pd

# Load example dataset
tips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")

# Create horizontal stripplot with jitter
chart = alt.Chart(tips).mark_circle(size=40, opacity=0.8).encode(
   x=alt.X('total_bill:Q', title='Total Bill ($)'),
   y=alt.Y('day:O', title='Day of Week'),
   color=alt.Color('sex:N', legend=alt.Legend(title='Gender')),
   tooltip=['total_bill', 'day', 'sex']
).properties(
   title='Total Bill by Day',
   width=600,
   height=300
).configure_axis(
   labelFontSize=12,
   titleFontSize=14
).configure_legend(
   labelFontSize=12,
   titleFontSize=14
)

# Save plot to HTML file
chart.save('stripplot.html')

输出

结论

总之,使用 Python 中的 Altair 创建带抖动的水平条形图是可视化数据集中分类变量和连续变量之间关系的一种简单而强大的方法。Altair 提供了一种声明式且直观的语法来创建具有可自定义属性的视觉上吸引人的绘图。

通过遵循本文中概述的步骤,可以轻松加载数据、指定必要的编码并自定义条形图的各个方面,例如大小、不透明度、颜色和工具提示信息。抖动的添加有助于避免点重叠,从而更清楚地了解不同类别中的数据密度和分布。

更新于:2023年7月24日

130 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告