Altair 结合多个数据集

AJK*_*AJK 3 python visualization vega-lite altair

我最近刚刚发现Vega/Vega-LiteAltair,并将其视为最佳 Python 绘图工具的真正竞争者。

我目前正在努力解决的问题是将两个数据帧中的信息绘制到共享一个或两个轴的同一个图表中。

我尝试过类似的事情:

plot1 = alt.Chart(df1).mark_point().encode(x = 'time:T', y = [...])[...]
plot2 = alt.Chart(df2).mark_point().encode(x = 'time:T', y = [...])[...]
Run Code Online (Sandbox Code Playgroud)

这确实有效,但它相当笨重而且不是很好。

我遇到了 LayerChart 对象,但从文档来看,我不太清楚如何正确使用它来绘制多个数据集。

  • 有人有这样的图表的例子吗?
  • 我需要做什么才能获得双 y 轴?

jak*_*vdp 5

具有不同数据集的图表可以通过Altair 文档中描述的任何机制分层在一起。

例如:

import pandas as pd
import altair as alt

df1 = pd.DataFrame({
    'times': [1, 2, 3],
    'values': [1, 5, 4],
})

df2 = pd.DataFrame({
    'times': [2, 3, 4],
    'values': [4, 2, 3],
})

chart1 = alt.Chart(df1).mark_line().encode(x='times', y='values')
chart2 = alt.Chart(df2).mark_line().encode(x='times', y='values')

chart1 + chart2
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述