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
相关产品推荐
相关产品推荐

