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

Streamlit line_chart组件X轴自动按字母排序问题求助

解决Streamlit折线图X轴星期顺序问题

问题出在pandas默认将字符串类型的星期几按字典序(字母顺序)排序,而非我们需要的周一到周日的逻辑顺序。解决核心是把Day列转换成有序分类类型,强制指定排序规则:

修改后的完整代码:

import pandas as pd
import streamlit as st

temps = {'Day': ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
         'Temp' : [20, 17, 28, 31, 25, 22, 24]}

df = pd.DataFrame(temps)
# 定义星期的自定义顺序
day_order = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
# 将Day列转为有序分类,锁定顺序
df['Day'] = pd.Categorical(df['Day'], categories=day_order, ordered=True)

st.dataframe(df)
# 此时设置索引后,折线图会严格遵循自定义顺序渲染X轴
st.line_chart(df.set_index('Day'))

关键逻辑:

  • pd.Categorical把列数据标记为分类类型,ordered=True明确这是一个有先后顺序的分类
  • 指定categories=day_order后,pandas和Streamlit都会遵循这个预设顺序处理排序和图表渲染,不再使用字母排序规则

内容的提问来源于stack exchange,提问作者formlessform

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:52:02