Altair 中每个列都是一个具有多个列的条形图的堆叠条形图

5
1个回答

9

看起来你正在处理宽表格数据,需要将其转换为长表格数据(请查看Altair文档中的长表格数据与宽表格数据)。

一个方便的处理方式是使用Fold变换(Fold Transform)。例如:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'label': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
    'value1': [1, 3, 2, 4, 5, 6, 4],
    'value2': [2, 1, 2, 5, 3, 4, 2],
})

alt.Chart(df).transform_fold(
  ['value1', 'value2'],
  as_=['column', 'value']
).mark_bar().encode(
  x='label:N',
  y='value:Q',
  color='column:N'
)

enter image description here


我尝试使用当前版本的Altair,但出现了AttributeError: 'list' object has no attribute 'get'错误,您有什么想法是什么问题吗? - Eric Eckert
1
您的 jsonschema 包版本不兼容(请参见 https://github.com/altair-viz/altair/issues/2496)。您需要更新 altair 到最新版本(4.2 或更高版本),或将 jsonschema 降级到 3.X 版本。 - jakevdp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接