首页 > 解决方案 > 如何显示多个字段的分组条形图?(牵牛星)

问题描述

我有以下数据集

在此处输入图像描述

我想在某种图表中显示这一点:参数应该位于 X 轴上:确认、死亡、恢复。必须为每个 region_name 定义它们。Y 轴应该是这些值的总和。我在官方文档中读到了melt()方法,但是我不太明白如何使用它。

我需要得到这样的东西,只有以下形式。

在此处输入图像描述

在此处输入图像描述

标签: pythonplotaltair

解决方案


你有宽格式数据;您需要将其转换为长格式数据。您可以使用melt()或类似方法在 pandas 中执行此操作,也可以使用 Altair 的transform_fold. 您可以在https://altair-viz.github.io/user_guide/data.html#long-form-vs-wide-form-data中阅读更多相关信息

对于您的数据,它可能看起来像这样:

import pandas as pd
import altair as alt

data = pd.read_csv('data_from_screenshot.csv')

alt.Chart(data).transform_fold(
  ["confirmed", "deaths", "recovered"],
  as_=["field", "value"]
).mark_bar().encode(
  x="field:N",
  y="sum(value):Q",
  column="region_name:N"
)

推荐阅读