如何在 Altair Python 中创建带有抖动的箱线图?


本教程将解释如何在 Altair Python 中创建带有抖动的箱线图。使用 Altair Python 中带有抖动的箱线图,可以快速轻松地可视化包含连续变量和分类变量的数据集。在箱线图中,一个变量是分类变量,另一个是连续变量。箱线图是一种散点图。通过将数据点作为沿分类轴的单个点查看,我们可以看到每个类别中连续变量的分布。使用抖动分散图中的数据点,可以更轻松地检查数据的分布情况。

我们可以使用 `mark_circle()` 函数创建带有抖动的箱线图,并使用 `jitter()` 函数添加抖动效果。首先必须使用 `encoding` 参数指定图表的 x 和 y 变量。然后使用 `mark_circle()` 函数创建图表,并使用 `jitter()` 函数添加抖动效果。还可以通过更改轴标签、配色方案和添加标题来修改图表。通过遵循这些简单的步骤,我们可以使用 Altair Python 创建易于阅读且信息丰富的带有抖动的箱线图。

语法

Altair 是一个 Python 库,可用于创建带有抖动的箱线图。以下是使用 Altair 创建带有抖动的箱线图的语法示例:

import altair as alt

# create a stripplot with jitter using Altair
alt.Chart(df).mark_circle(size = 14).encode(
   x = alt.X('jitter:Q', title = None, axis = alt.Axis(ticks = True, grid = False, labels = False), scale = alt.Scale()),
   y = alt.Y('Y:Q', scale = alt.Scale()),
   color = alt.Color('C:N', legend = None),
).transform_calculate(
   Jitter = 'sqrt(-2*log(rand()))*cos(2*PI*rand())',
)

给定的代码使用 Altair 创建带有抖动的箱线图。`transform_calculate()` 方法通过计算随机数的负两倍自然对数的平方根(使用 Python 的 `random` 模块中的 `rand()` 方法生成)然后乘以两倍 π 与使用相同 `rand()` 方法生成的另一个随机数的余弦来生成 x 轴的高斯抖动。这会生成一个抖动值,并将其添加到 DataFrame 中的“抖动”列中。然后,使用 `alt.X()` 方法中的“抖动:Q”编码将此抖动值映射到 x 轴。

示例

下面的代码使用 Python 中的 Altair 可视化库生成带有抖动的箱线图。该代码首先使用 `pandas.DataFrame()` 创建一个自定义数据集,其中包含 100 个随机生成的 x 值、y 值和类别。x 和 y 值表示图中点的坐标,而类别列决定每个点的颜色。

然后使用 `alt.Chart()` 函数创建一个图表对象,并调用 `mark_circle()` 函数指定图表应为圆形。`encode()` 方法用于指定如何将数据映射到图表的视觉属性,例如 x 和 y 位置以及点颜色。在这种情况下,x 编码使用名为抖动的计算字段来向 x 轴添加抖动,而 y 编码指定 y 值。颜色编码使用类别列为点着色,`legend=None` 参数删除图例。最后,`transform_calculate()` 函数用于使用基于随机数生成器的公式计算抖动字段,这会向 x 值添加少量随机噪声并将点水平分散。

import altair as alt
import pandas as pd
import numpy as np

# create a custom dataset
custom_data = pd.DataFrame({
   'x_values': np.random.randn(100),
   'y_values': np.random.randn(100),
   'category': np.random.choice(['A', 'B', 'C'], 100)
})

# create a stripplot with jitter using Altair
alt.Chart(custom_data).mark_circle(size = 14).encode(
   x=alt.X('jitter:Q', title = None, 
   axis = alt.Axis(ticks = True, grid = False, labels = False), scale = alt.Scale()),
   y=alt.Y('y_values:Q', scale=alt.Scale()),
   color=alt.Color('category:N', legend = None),
).transform_calculate(
   jitter='sqrt(-2*log(random()))*cos(2*PI*random())',
)

输出

示例

此示例显示了使用 Iris 数据集在 Altair 中创建带有抖动的箱线图。代码首先导入必要的库,包括 Altair 和来自 `vega_datasets` 库的 Iris 数据集。然后,它使用 `mark_circle` 方法创建一个 Altair 图表,为每个数据点创建一个圆圈,并分别使用 Altair 的 X、Y 和 Color 类对 x、y 和颜色变量进行编码。

此示例显示了使用 Iris 数据集在 Altair 中创建带有抖动的箱线图。代码首先导入必要的库,包括 Altair 和来自 `vega_datasets` 库的 Iris 数据集。然后,它使用 `mark_circle` 方法创建一个 Altair 图表,为每个数据点创建一个圆圈,并分别使用 Altair 的 X、Y 和 Color 类对 x、y 和颜色变量进行编码。

import altair as alt
from vega_datasets import data

# load the Iris dataset
iris = data.iris()

# create a stripplot with jitter using Altair
alt.Chart(iris).mark_circle(size = 14).encode(
   x = alt.X('jitter:Q', title = None, axis = alt.Axis(ticks = True, grid = False, labels = False), scale = alt.Scale()),
   y = alt.Y('petalWidth:Q', scale = alt.Scale()),
    color = alt.Color('species:N', legend = None),
).transform_calculate(
   jitter = 'sqrt(-2*log(random()))*cos(2*PI*random())',
)

输出

结论

总之,使用抖动创建箱线图对于显示数据点的分布及其变异性非常有用。Python Altair 包使完成此操作变得简单有效。用户可以通过遵循本文中提供的说明(包括导入所需的库、加载数据和对 x、y 和颜色变量进行编码)来创建信息丰富且美观的图表。由于现在更容易识别数据点和数据中的模式,因此通过包含使用 `transform_calculate` 方法的抖动进一步改进了该图。

总的来说,Altair 是一个强大的 Python 数据可视化工具,使用抖动创建箱线图只是其功能的一个示例。您可以通过试验各种数据集和视觉编码来创建各种强大且信息丰富的可视化效果。由于 Altair 的语法简单且功能强大,数据可视化的可能性是无限的。

更新于:2023年5月12日

浏览量:303

启动您的 职业生涯

完成课程获得认证

开始
广告