You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Streamlit的st.line_chart绘制多折线图

解决Streamlit多数组同图绘制问题

你的问题核心是循环调用st.line_chart会生成独立图表,要把多条线放在同一张图里,需要先将所有数据整合成pandas DataFrame格式(st.line_chart对DataFrame支持更好,会自动将每一列作为一条折线)。

具体步骤:

  1. 将字典数据转换为DataFrame:把字典的键作为列名,对应数组作为列数据,这样每个文件的数据就对应DataFrame的一列。
  2. 一次性传入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:34:59