求助:如何用Streamlit的st.line_chart绘制多折线图
解决Streamlit多数组同图绘制问题
你的问题核心是循环调用st.line_chart会生成独立图表,要把多条线放在同一张图里,需要先将所有数据整合成pandas DataFrame格式(st.line_chart对DataFrame支持更好,会自动将每一列作为一条折线)。
具体步骤:
- 将字典数据转换为DataFrame:把字典的键作为列名,对应数组作为列数据,这样每个文件的数据就对应DataFrame的一列。
- 一次性传入DataFrame绘图:直接调用
st.line_chart传入这个DataFrame,就能在同一张图里展示所有折线。
完整代码示例:
import glob import numpy as np import pandas as pd import streamlit as st # 替换为你的文件夹路径 folder = "your_folder_path" TempDict = {} # 读取所有.npy文件到字典(优化原循环写法) for file_path in glob.glob(folder + '/*.npy'): data_extract = np.load(file_path) # 提取文件名作为字典键(注意路径分隔符:Windows用\\,Linux/mac用/) filename = file_path.replace(folder + '\\', '') TempDict[filename] = data_extract # 将字典转换为DataFrame,每一列对应一个文件的数据 df = pd.DataFrame(TempDict) # 绘制同图折线图 st.line_chart(df)
注意事项:
- 如果不同.npy文件的数组长度不一致,
pd.DataFrame会自动用NaN填充缺失的位置,Streamlit会忽略这些缺失值继续绘图。 - 如果你需要自定义X轴,可以给DataFrame添加索引(比如时间序列),
st.line_chart会自动将索引作为X轴。
内容的提问来源于stack exchange,提问作者Tritize
相关产品推荐
相关产品推荐

