问题现象描述
当开发者使用st.altair_chart()方法渲染Altair可视化图表时,经常遇到以下典型症状:
- 网页空白区域无任何错误提示
- 控制台无JavaScript报错但图表缺失
- 图表容器存在但内容未加载
- 仅在部分浏览器显示异常
根本原因分析
通过分析GitHub issue和Stack Overflow案例,发现主要问题集中在:
- 数据格式不兼容:Altair要求DataFrame必须符合tidy data规范
- Vega-Lite版本冲突:Streamlit内置渲染引擎与Altair要求的规范版本不匹配
- 异步加载问题:图表元素未正确挂载到DOM节点
7步排查方案
第一步:验证基础数据
import pandas as pd
df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6]})
print(df.dtypes) # 检查数据类型
print(df.isnull().sum()) # 检查空值
第二步:最小化测试案例
import altair as alt
from vega_datasets import data
base_chart = alt.Chart(data.cars()).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon'
)
st.altair_chart(base_chart)
第三步:版本兼容性检查
| 组件 | 推荐版本 |
|---|---|
| Streamlit | ≥1.12.0 |
| Altair | ≥4.2.0 |
| Vega-Lite | 5.5.0 |
高级调试技巧
DOM元素检查
使用Chrome开发者工具检查:
- 查找
<div class="stChart">元素 - 验证
vega-embed相关的