如何让Plotly Express柱状图中十进制数值垂直显示?
问题:梦幻足球联赛Plotly柱状图Y轴小数垂直显示问题
我正在为梦幻足球联赛制作Plotly柱状图(后续将集成到Plotly Dash仪表盘),需求为X轴展示week,Y轴展示points(得分,含两位小数),以呈现用户赛季得分变化。但当前代码生成的图表中,十进制points数值水平显示,而将数据改为整数时数值可正常垂直显示(但会丢失小数精度,且颜色、图例表现异常)。如何让十进制数据像整数版本那样垂直显示,同时保留小数精度?
数据示例
id year week matchup points winner difference 1 2022-1-1-1 2022 1 1 122.60 1 27.18 2 2022-2-2-1 2022 2 2 66.76 1 2.62 3 2022-3-2-1 2022 3 2 91.56 1 0.04 4 2022-4-2-1 2022 4 2 128.28 1 5.20 5 2022-5-2-1 2022 5 2 147.68 1 38.62 6 2022-6-2-1 2022 6 2 83.06 1 19.32 7 2022-7-2-0 2022 7 2 92.72 0 -14.54 8 2022-8-2-0 2022 8 2 93.82 0 -40.52 9 2022-9-2-1 2022 9 2 120.10 1 26.20 10 2022-10-2-1 2022 10 2 140.20 1 66.60 11 2022-11-2-1 2022 11 2 99.08 1 10.28 12 2022-12-1-1 2022 12 1 149.26 1 73.30 13 2022-13-2-0 2022 13 2 105.32 0 -22.80 14 2022-14-2-0 2022 14 2 115.68 0 -1.70 15 2022-15-2-1 2022 15 2 112.16 1 10.66 16 2022-16-2-1 2022 16 2 109.88 1 2.68 17 2022-17-1-1 2022 17 1 110.42 1 31.10
当前代码
fig = px.bar(df, x='week', y='points', color='winner',color_discrete_map={'1':'#80c940','0':'crimson'}) fig.update_layout(showlegend=False) fig.show()
解决方案
问题源于Plotly对小数类型Y轴刻度的自动显示逻辑,只需手动指定Y轴的刻度格式和显示角度即可解决:
- 保留小数精度:用
tickformat='.2f'强制Y轴刻度显示两位小数 - 强制垂直显示:用
tickangle=0指定刻度文本垂直排列(整数数据默认采用此角度)
修改后的完整代码:
import plotly.express as px fig = px.bar(df, x='week', y='points', color='winner', color_discrete_map={'1':'#80c940','0':'crimson'}) # 配置Y轴:保留两位小数 + 垂直显示刻度 fig.update_yaxes(tickformat='.2f', tickangle=0) fig.update_layout(showlegend=False) fig.show()
此修改无需改动原始数据类型,既保留了得分的小数精度,又让Y轴刻度像整数版本一样垂直显示,同时颜色映射和图例的表现也会恢复正常。
内容的提问来源于stack exchange,提问作者FurstyFerret
相关产品推荐
相关产品推荐

