📜  如何使用 Altair 对散点图进行分面?

📅  最后修改于: 2022-05-13 01:55:37.183000             🧑  作者: Mango

如何使用 Altair 对散点图进行分面?

在本文中,我们将学习如何使用 Altair 对散点图进行分面。让我们回忆一些概念:

  • Altair 是Python中的统计可视化库。它本质上是声明性的,基于 Vega 和 Vega-Lite 可视化语法。它正迅速成为寻求快速有效数据集可视化方法的人们的首选。如果您使用过像 matplotlib 这样的命令式可视化库,您将能够正确地欣赏 Altair 的功能。
  • 散点图(也称为散点图、散点图、散点图、散点图或散点图)是一种使用笛卡尔坐标显示一组数据的典型两个变量的值的图或数学图。

在这里,我们使用 Altair 库制作散点图。为此,我们使用 Altair 中的 Chart()函数加载数据,然后使用 mark_point()函数绘制散点图。然后我们使用美学 x 和 y 轴来 encode()函数。在制作这个散点图后,我们将使用分组的列值(例如集群)对其进行分面。

需要的步骤

  1. 导入库 (Altair)。
  2. 创建/加载数据。
  3. 使用 Chart() 加载绘图数据。
  4. 使用 mark_point() 散点图。
  5. 对 x 和 y 轴使用 encode()。
  6. (可选)使用 properties() 设置宽度和高度。
  7. 在带有簇的散点图上使用 facet()。

例子

让我们通过一些例子来理解上述步骤:

示例 1:

在这个例子中,我们用一些虚拟数据绘制了一个简单的面散点图。如下图所示:

下面是实现:

Python3
# import libraries
import altair as alt
import pandas as pd
import numpy as np
np.random.seed(1)
  
# create data
df = pd.DataFrame({'X':np.random.randint(1, 10, 50),
                   'Y':np.random.randint(1, 10, 50),
                   'Cluster':np.random.randint(1, 5, 50)})
  
# Draw Facet Scatter Plot
alt.Chart(df).mark_point().encode(
    x=alt.X('X'),
    y=alt.Y('Y')
).properties(width = 200, height = 200).facet(
    'Cluster:N',
    columns = 2
)


Python3
# import libraries
import altair as alt
from vega_datasets import data
  
# load data
iris = data.iris()
  
# Draw Facet Scatter Plot
alt.Chart(iris).mark_point().encode(
    x = alt.X('sepalLength'),
    y = alt.Y('sepalWidth'),
    color = 'species'
).properties(width = 250, height = 250).facet(
    'species:N',
    columns = 3
)


Python3
# import libraries
import altair as alt
from vega_datasets import data
  
# load data
cars = data.cars()
  
# Draw Facet Scatter Plot
alt.Chart(cars).mark_point().encode(
    x = alt.X('Displacement'),
    y = alt.Y('Acceleration'),
    size = alt.value(100),
    color = 'Cylinders'
).properties(width = 250, height = 250).facet(
    'Origin:N',
    columns = 3
)


输出:

示例 2:(来自 Vega 数据集的鸢尾花数据)

蟒蛇3

# import libraries
import altair as alt
from vega_datasets import data
  
# load data
iris = data.iris()
  
# Draw Facet Scatter Plot
alt.Chart(iris).mark_point().encode(
    x = alt.X('sepalLength'),
    y = alt.Y('sepalWidth'),
    color = 'species'
).properties(width = 250, height = 250).facet(
    'species:N',
    columns = 3
)

输出:

示例 3:(来自 Vega 数据集的汽车数据)

蟒蛇3

# import libraries
import altair as alt
from vega_datasets import data
  
# load data
cars = data.cars()
  
# Draw Facet Scatter Plot
alt.Chart(cars).mark_point().encode(
    x = alt.X('Displacement'),
    y = alt.Y('Acceleration'),
    size = alt.value(100),
    color = 'Cylinders'
).properties(width = 250, height = 250).facet(
    'Origin:N',
    columns = 3
)

输出: