为何无法修改Streamlit中Plotly图表的坐标轴及轴标题灰色?
解决Streamlit中Plotly图表坐标轴及轴标题灰色无法修改的问题
核心问题与修复点
- 轴标题颜色未单独配置:你当前使用的
color参数仅控制坐标轴线条和刻度文字的颜色,轴标题的颜色需要通过title_font_color单独设置。 - Streamlit主题默认覆盖样式:Streamlit内置主题会自动调整Plotly图表的样式,可能冲掉你自定义的颜色设置,需要显式处理。
修改后的完整代码
import streamlit as st import plotly.graph_objects as go import plotly.subplots as sp # 假设qdata为你的数据对象 fig = sp.make_subplots(specs=[[{"secondary_y": True}]]) fig.add_trace(go.Line(x=qdata.DateTime, y=qdata.a), secondary_y=False) fig.add_trace(go.Line(x=qdata.DateTime, y=qdata.b), secondary_y=False) fig.add_trace(go.Line(x=qdata.DateTime, y=qdata.c), secondary_y=False) fig.add_trace(go.Line(x=qdata.DateTime, y=qdata.d), secondary_y=False) fig.add_trace(go.Line(x=qdata.DateTime, y=qdata.e), secondary_y=True) # 配置主Y轴:新增title_font_color控制标题颜色 fig.update_yaxes( color='#000000', title_text="<b>TEMPERATURES </b> (F)", title_font_color='#000000', range=[option_Y1Range0, option_Y1Range1], secondary_y=False ) # 配置副Y轴:新增title_font_color控制标题颜色 fig.update_yaxes( color='#000000', title_text="<b>MODE</b> (0 to 5)", title_font_color='#000000', range=[option_Y2Range0, option_Y2Range1], secondary_y=True ) # 配置X轴:若有X轴标题,需补充title_font_color fig.update_xaxes( type='category', color='#000000', title_font_color='#000000' ) fig.update_layout( width=1800, height=600, font_color='#000000', legend=dict(yanchor="top", orientation="h", y=0.9, xanchor="left", x=0.4), template='plotly_white' # 指定Plotly模板,避免Streamlit主题干扰 ) # 用st.plotly_chart替代st.write,可选禁用主题覆盖 st.plotly_chart(fig, use_container_width=True, theme=None)
额外说明
- 使用
st.plotly_chart时添加theme=None,会完全禁用Streamlit主题对Plotly的样式覆盖,确保自定义颜色生效。 - 若X轴设置了标题,一定要在
update_xaxes中补充title_font_color配置。
内容的提问来源于stack exchange,提问作者Janzaib M Baloch
相关产品推荐
相关产品推荐

