首页 > 解决方案 > 如何在 Streamlit 上使用 Altair 绘制多个 Y 轴?

问题描述

我想知道如何在 Streamlit 上使用 Altair 绘制多个 Y 轴。

import pandas as pd
import numpy as np
import altair as alt
import streamlit as st

df = pd.DataFrame({
    'name': ['brian', 'dominik', 'patricia'],
    'age': [20, 30, 40],
    'salary': [1000, 2000, 3000]
})

c = alt.Chart(df).mark_area().encode(
    x='name', y=['age', 'salary'])
st.altair_chart(c, use_container_width=True)

上面的示例返回以下错误:

SchemaValidationError:无效规范 altair.vegalite.v4.schema.core.FacetedEncoding->0,验证“类型”[{“类型”:“定量”,“字段”:“年龄”},{“类型”:“定量” , 'field': 'salary'}] 不是 'object' 类型

标签: pythonchartsaltairstreamlit

解决方案


我发现如何使用layer自己做:

df = pd.DataFrame({
    'name': ['brian', 'dominik', 'patricia'],
    'age': [20, 30, 40],
    'salary': [100, 200, 300]
})

a = alt.Chart(df).mark_area(opacity=1).encode(
    x='name', y='age')

b = alt.Chart(df).mark_area(opacity=0.6).encode(
    x='name', y='salary')

c = alt.layer(a, b)

st.altair_chart(c, use_container_width=True)

推荐阅读