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

如何将Plotly Box图的统计标签翻译为俄语?

解决Plotly Box图统计标签俄语本地化问题

问题描述

我以Flask为服务器搭建Dash数据可视化网站,使用Plotly的go模块创建Pie、Scatter、Box三类图表。Pie与Scatter的文本可正常自定义,但Box图自带的min、q1、中位数、lower fence、q3、upper fence、max等统计标签,尝试通过设置layout的locale参数为俄语('ru_EU')后仍未生效,需要修改这些标签语言、自定义替换或删除它们的方法。

解决方案

方法1:自定义Box图悬停文本(最灵活可控)

直接在go.Box中手动计算统计值并生成俄语悬停文本,完全绕过Plotly默认的标签系统。修改你的salbox函数如下:

def salbox(df):#salary for different levels, graph which I want to translate
    df1 = df[df['level'] != missing]
    fig = []
    # 俄语统计标签映射
    ru_stats = {
        'min': 'Минимум',
        'q1': 'Q1',
        'median': 'Медиана',
        'q3': 'Q3',
        'max': 'Максимум',
        'lower_fence': 'Нижняя граница',
        'upper_fence': 'Верхняя граница'
    }
    for level in df1['level'].unique():
        df_level = df1.loc[df1['level'] == level]
        df_level['salary'] = (df_level['min_salary'] + df_level['max_salary']) / 2
        salary_data = df_level['salary'].dropna()
        
        # 计算箱线图所需统计值
        min_val = salary_data.min()
        q1_val = salary_data.quantile(0.25)
        median_val = salary_data.median()
        q3_val = salary_data.quantile(0.75)
        max_val = salary_data.max()
        iqr = q3_val - q1_val
        lower_fence = q1_val - 1.5 * iqr
        upper_fence = q3_val + 1.5 * iqr
        
        # 构建自定义俄语悬停文本
        hover_content = f"""
{ru_stats['min']}: {min_val:.2f}
{ru_stats['q1']}: {q1_val:.2f}
{ru_stats['median']}: {median_val:.2f}
{ru_stats['q3']}: {q3_val:.2f}
{ru_stats['max']}: {max_val:.2f}
{ru_stats['lower_fence']}: {lower_fence:.2f}
{ru_stats['upper_fence']}: {upper_fence:.2f}
"""
        fig.append(go.Box(
            y=df_level['level'],
            x=df_level['salary'],
            orientation='h',
            name=level,
            hovertext=hover_content,
            hoverinfo='text'  # 指定仅显示自定义文本
        ))
    return fig

方法2:正确配置Plotly全局Locale

仅设置layout的locale可能无效,需要确保Plotly加载了俄语语言包并全局配置:

  1. 在代码开头添加Locale初始化:
import plotly.io as pio
# 可先打印支持的Locale列表确认俄语是否存在:print(pio.locales)
# 设置默认Locale为俄语
pio.locale.default = 'ru'
  1. 然后在Box图的layout中指定locale:
# 在dcc.Graph的figure配置里修改
figure={'data' : salbox(df),
        'layout' : {
            'width' : 500,
            'height' : 300,
            'locale': 'ru'  # 使用Plotly支持的俄语Locale代码
        }}

方法3:隐藏统计标签(无需显示时)

如果不需要这些统计标签,可以直接关闭相关显示:

def salbox(df):#salary for different levels, graph which I want to translate
    df1 = df[df['level'] != missing]
    fig = []
    for i in df1['level'].unique():
        df2 = df1.loc[df1['level'] == i]
        df2['salary'] = (df2['min_salary'] + df2['max_salary']) / 2
        fig += [go.Box(
            y = df2['level'], 
            x = df2['salary'],
            orientation='h', 
            name=i,
            hoverinfo='x+y'  # 仅显示x/y值,不展示统计标签
            # 可选:隐藏箱线图的外部点
            # boxpoints=False
        )]
    return fig

内容的提问来源于stack exchange,提问作者Арсен Нуриманов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:04:58