如何在同一张图表中彼此相邻放置两个不同的柱形图?

时间:2020-02-15 08:48:12

标签: altair

假设我们的数据帧有两个整数类型系列:estimated_valuesell_price

我要在同一条形图中将两个条形彼此相邻。 左侧显示average(estimated_value),右侧显示average(sell_price)。 它们应该共享相同的轴。

我认为这将是一个非常常见的用例,但我在文档中找不到任何示例。所有示例都使用“颜色”或“列”对条进行分组。

  • 我尝试使用y2,但似乎只是消除了y1的差异,而不是添加第二个序列。
  • 然后我尝试使用layeredChart,但这将两个条形放置在彼此的顶部,而不是彼此相邻。

1 个答案:

答案 0 :(得分:2)

听起来您拥有的是宽格式数据,而不是长格式数据。差异在Long-form vs. Wide-form data中进行了讨论。

将数据转换为长格式后,可以使用标准编码来获得此结果。使用一些示例数据,它的外观如下:

import altair as alt
import pandas as pd

data = pd.DataFrame({
    'estimated_value': [500, 600, 700, 800, 900],
    'sell_price': [550, 610, 690, 810, 950]
})

alt.Chart(data).transform_fold(
    ['estimated_value', 'sell_price'], as_=['category', 'price']
).mark_bar().encode(
    y='category:N',
    x='average(price):Q',
)

enter image description here