首页 > 解决方案 > 如何模仿 Python 包 Altair 中的 R 库 ggplot 中的 geom_col() 函数?

问题描述

我正在尝试使用 Altair 绘制柱形图,但是 Altair 中没有 mark_column() 方法。如何使用 Altairs mark_bar() 方法模仿 geom_col() 的功能?

标签: pythonrggplot2altair

解决方案


ggplot2 文档

有两种类型的条形图:geom_bar()geom_col()geom_bar()使条形的高度与每组中的案例数量成正比(或者如果提供了重量美学,则为权重的总和)。如果您希望条形的高度表示数据中的值,请geom_col()改用。

听起来他们之间的区别不是标记,而是标记代表什么价值。在 Altair 中,标记表示的值是通过编码定义的。

所以 Altair 的版本geom_bar()可能看起来像这样:

data = pd.DataFrame({
  'category': ['A', 'A', 'B', 'B', 'B', 'C']
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='count():Q'
)

或者,对于geom_bar()重量美学,

data = pd.DataFrame({
  'category': ['A', 'A', 'B', 'B', 'B', 'C'],
  'weights': [1, 2, 1, 2, 3, 2]
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='sum(weights):Q'
)

Altair 的版本geom_col()可能如下所示:

data = pd.DataFrame({
  'category': ['A', 'B', 'C'],
  'value': [4.1, 6.3, 2.2]
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='value:Q'
)

推荐阅读