围绕在同一张图表上绘制两组季节性数据而乱搞

时间:2019-06-19 06:25:15

标签: altair

自2017年以来,我拥有一系列的每月库存数据。 自2018年12月以来我有一系列的stock_forecasts

我试图按月绘制季节数据,然后覆盖2019年1月至2019年12月的stock_forecasts。

数据框如下:

enter image description here

我尝试制作图表的第一种方法确实显示了我想要的所有数据,但是我无法控制inventory_zj行的颜色。其颜色似乎由我配置的color=year(date):N的{​​{1}}主导。它忽略了我传递给alt.Chart的{​​{1}}

color='green'

enter image description here

我尝试使用分层系统,但是它根本不起作用-我无法显示“ joe”层

mark_line()

enter image description here

我觉得我必须以一种根本错误的方式来组装这张图表。我应该能够共享相同的左y轴,按年份对历史数据进行着色,并对2019年的预测数据使用唯一的颜色。但是我似乎一团糟。

1 个答案:

答案 0 :(得分:0)

Customizing Visualizations文档中所述,可以使用多种方法来指定诸如线条颜色之类的东西,并具有明确定义的层次结构:编码会覆盖标记属性,而后者会覆盖顶级配置。

在图表中,您编写base.mark_point(color='green'),其中base包含覆盖mark属性的颜色编码。如果您不从基础派生该图层(因此它没有颜色编码),则该行将如您所愿地变为绿色。像这样:

base = alt.Chart(inv.loc['2000':].reset_index(), title=f"usa total inventory")

inventory = base.mark_line().encode(
    x='month',
    y="inventory",
    color="year(date):N"
)

joe = base.mark_line(color='green').encode(
    x='month',
    y=alt.Y('inventory_zj', scale=alt.Scale(zero=False))
)

inventory + joe