📜  在Python使用 Altair 创建分组条形图

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

在Python使用 Altair 创建分组条形图

当我们想要比较多组数据项时,分组条形图是一种方便的工具来表示我们的数据。要制作分组条形图,我们需要在我们的数据集中至少三行三列数据。这三列可用作一列用于值、一列用于系列、一列用于类别。在分组条形图中,系列中存在的数据值并排表示并按特定类别分组,以便它们的值可以在轴上相应地表示。属于特定系列的所有数据值将始终在所有类别中用相同的颜色表示。

让我们举一个例子,假设我们想比较两个玩家在三种格式上的运行。在这里,玩家得分作为值,玩家名称作为一个系列,游戏的格式作为类别。始终,每个玩家得分的运行将在不同格式中具有相同的颜色表示。

在本文中,我们将学习使用Python的Altair 库创建分组条形图。

正如我们所讨论的,我们至少需要三行/三列,我们将从导入必要的库开始,然后使用 Pandas 库创建一个具有三列的数据集。

示例 1:



Python
import altair as alt
import pandas as pd
  
# creating a custom dataframe
data = pd.DataFrame([[264, 'Rohit', 'ODI'], 
                     [183, 'Virat', 'ODI'], 
                     [118, 'Rohit', 'T20'], 
                     [94, 'Virat', 'T20'],
                     [212, 'Rohit','Test'],
                     [254, 'Virat','Test']],
                     columns=['Highest Score', 'Player', 'Format'])
  
print(data)


Python
gp_chart = alt.Chart(data).mark_bar().encode(
  alt.Column('Format'), alt.X('Player'),
  alt.Y('Highest Score', axis=alt.Axis(grid=False)), 
  alt.Color('Player'))
  
gp_chart.display()


Python3
# importing package
import altair as alt
import pandas as pd
  
# create data
data = pd.DataFrame([['A', 10, 20],
                     ['B', 5, 29],
                     ['A', 15, 29],
                     ['B', 15, 20]],
                    columns=['Team', 'Round 1', 'Round 2'])
# view data
print(data)
  
gp_chart = alt.Chart(data).mark_bar().encode(
    alt.Column('Round 2'), alt.X('Team'),
    alt.Y('Round 1', axis=alt.Axis(grid=False)),
    alt.Color('Team'))
  
gp_chart.display()


输出:

分组条形图 python altair

现在,我们有一个包含三列的数据集,我们要在其中比较不同格式(类别)的两个球员(系列)的最高得分(值)。

Python

gp_chart = alt.Chart(data).mark_bar().encode(
  alt.Column('Format'), alt.X('Player'),
  alt.Y('Highest Score', axis=alt.Axis(grid=False)), 
  alt.Color('Player'))
  
gp_chart.display()

输出:

我们可以通过调用 Altair 库中的alt.Chart()方法来绘制组图。我们希望我们的类别显示为列,所以我们可以在alt.Column()方法中传递 Format,我们的系列(玩家)将在 x 轴上表示,因此我们在alt.X()字段中传递 Player ,并且我们的值(运行)应该显示在 y 轴上,因此我们在alt.Y()字段内传递最高分数。每个播放器在所有格式中都应该具有相同的颜色,因此我们将 Player 传递到alt.Color()方法中。

示例 2:

蟒蛇3

# importing package
import altair as alt
import pandas as pd
  
# create data
data = pd.DataFrame([['A', 10, 20],
                     ['B', 5, 29],
                     ['A', 15, 29],
                     ['B', 15, 20]],
                    columns=['Team', 'Round 1', 'Round 2'])
# view data
print(data)
  
gp_chart = alt.Chart(data).mark_bar().encode(
    alt.Column('Round 2'), alt.X('Team'),
    alt.Y('Round 1', axis=alt.Axis(grid=False)),
    alt.Color('Team'))
  
gp_chart.display()

输出:

Altair groubed 酒吧蟒蛇