Plotly Express柱状图Y轴刻度添加单位问题求助
解决Plotly Express柱状图Y轴刻度添加“xx.xh”单位的问题
方法一:利用ticksuffix+tickformat直接设置(推荐)
直接通过update_yaxes()针对Y轴配置,结合ticksuffix添加单位后缀,tickformat控制小数位数,无需手动生成刻度:
import plotly.express as px # 自定义字典数据示例 game_data = { "game_name": ["原神", "星穹铁道", "CS2"], "total_hours": [24.6, 18.2, 32.9] } # 绘制柱状图 fig = px.bar(game_data, x="game_name", y="total_hours", title="游戏总时长统计") # 配置Y轴刻度格式 fig.update_yaxes( tickformat=".1f", # 保留1位小数,可按需调整为".0f"(整数)或".2f"(两位小数) ticksuffix="h" # 添加小时单位后缀 ) fig.show()
方法二:自定义刻度值与文本(适用于精准控制刻度场景)
如果方法一不生效,可手动指定刻度值和对应显示文本,完全自定义格式:
import plotly.express as px game_data = { "game_name": ["原神", "星穹铁道", "CS2"], "total_hours": [24.6, 18.2, 32.9] } fig = px.bar(game_data, x="game_name", y="total_hours", title="游戏总时长统计") # 自定义刻度值(根据数据范围调整) tick_values = [0, 10, 20, 30, 40] # 生成对应刻度文本,格式为"xx.xh" tick_texts = [f"{val}.0h" if val % 1 == 0 else f"{val}h" for val in tick_values] # 应用自定义刻度 fig.update_yaxes( tickmode="array", tickvals=tick_values, ticktext=tick_texts ) fig.show()
为什么之前的方法没生效?
text_auto()是控制柱子上显示的文本,而非坐标轴刻度,对轴格式无影响;- 若之前用
fig.update_layout(yaxis={"tickformat": ".1fh"}),这种写法错误——Plotly的tickformat仅负责数值格式,单位后缀需用ticksuffix单独设置,二者组合才会生效。
内容的提问来源于stack exchange,提问作者404rorre
相关产品推荐
相关产品推荐

