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

如何将Plotly箱线图Y轴及悬停框数值转换为‘万’单位?

Plotly箱线图实现中文“万”单位显示方案

方法一:直接转换数据列(最简单直观)

直接将原销售额列转换为“万”单位后绘图,无需复杂配置,所有图表元素(Y轴、悬停文本)都会自动使用转换后的值:

import plotly.express as px

# 新增万单位列
df['amt_sales_万'] = df['amt_sales'] / 10000

# 生成箱线图
fig = px.box(df, x='calmonth', y='amt_sales_万')

# 配置Y轴:设置中文标题,刻度显示整数
fig.update_yaxes(title='销售额(万)', tickformat='.0f')

# 自定义悬停模板,明确标注“万”单位
fig.update_traces(hovertemplate='月份: %{x}<br>销售额: %{y:.0f}万<extra></extra>')

fig.show()

方法二:不修改原数据,通过Plotly内置配置实现

如果不想修改原DataFrame,可以通过自定义Y轴刻度和悬停模板来实现单位转换:

import plotly.express as px
import numpy as np

# 基于原始数据生成箱线图
fig = px.box(df, x='calmonth', y='amt_sales')

# 计算Y轴刻度范围,生成以10000为步长的整数刻度值
y_min = df['amt_sales'].min() // 10000 * 10000
y_max = df['amt_sales'].max() // 10000 * 10000 + 10000
tickvals = np.arange(y_min, y_max + 1, 10000)
# 将刻度值转换为“X万”的中文文本
ticktext = [f'{val // 10000}万' for val in tickvals]

# 更新Y轴配置
fig.update_yaxes(
    title='销售额(万)',
    tickvals=tickvals,
    ticktext=ticktext
)

# 自定义悬停模板,将原始数值转换为万单位显示
fig.update_traces(
    hovertemplate='月份: %{x}<br>销售额: %{y:.0f}万<extra></extra>'
)

fig.show()

为什么之前的方法不生效?

  • hover_data仅用于添加额外的悬停数据,无法覆盖箱线图默认的Y轴数值显示,必须通过hovertemplate统一替换整个悬停内容。
  • 使用np.linspace生成刻度容易出现非整数,不如基于数据范围按10000步长生成整数刻度,保证Y轴显示为整数的“万”单位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:31:07