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

Python中使用Plotly调整千分位逗号及图表格式问题求助

解决方案

1. Y轴带逗号的百分比格式

通过Plotly的区域设置和自定义刻度格式,实现逗号作为小数分隔符的百分比显示,比如0,00%、50,00%。

2. 条形图数值替换逗号

对格式化后的数值文本做字符串替换,将小数点改为逗号,确保显示为XX,XX%格式。

3. 顶部图例设置

调整Trace添加逻辑,让每个技术(1D-CNN等)作为独立Trace并设置名称,再通过布局参数将图例定位到图表上方。


修改后的完整代码:

import plotly.subplots as sp
import plotly.graph_objects as go
import numpy as np

tecnicas = ['1D-CNN', 'FT-Transformer', 'MLP', 'NODE', 'TabNet', 'TabTransform']
medidas_desempenho = ['T.A/HI', 'PCA', 'S.A', 'UNDER', 'OVER']

dados = np.array([
    [59.11, 65.7, 63.1, 63.47, 65.89, 63.38],
    [60.13, 28.71, 61.15, 53.15, 63.47, 21.56],
    [59.57, 64.21, 60.5, 65.42, 66.45, 65.89],
    [57.43, 65.7, 58.27, 62.36, 65.25, 62.54],
    [57.8, 63.75, 63.38, 65.15, 66.72, 35.03]
])

cores = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b']

fig = sp.make_subplots(rows=len(medidas_desempenho), cols=1, subplot_titles=medidas_desempenho, shared_xaxes=True)

dados_formatados = np.around(dados, decimals=2)

# 调整循环逻辑:按技术遍历,每个技术在所有子图中生成独立Trace
for tech_idx, tech in enumerate(tecnicas):
    for medida_idx, _ in enumerate(medidas_desempenho):
        fig.add_trace(go.Bar(
            x=[tech],
            y=[dados_formatados[medida_idx][tech_idx]],
            name=tech,  # 设置技术名称作为图例标签
            text=['{:.2f}%'.format(dados_formatados[medida_idx][tech_idx]).replace('.', ',')],
            textposition='outside',
            marker=dict(color=cores[tech_idx]),
            hovertemplate=None
        ), row=medida_idx+1, col=1)

fig.update_layout(
    height=900,
    barmode='group',
    showlegend=True,  # 开启图例
    legend=dict(
        y=1.1,  # 将图例定位到图表上方
        orientation='h',  # 水平排列
        xanchor='center',
        x=0.5
    ),
    plot_bgcolor='rgba(240,240,240,0.8)',
    paper_bgcolor='rgba(240,240,240,0.8)',
    margin=dict(t=100, b=50),  # 增加顶部边距避免图例遮挡子图标题
    font=dict(family='Arial', size=12, color='black')
)

# 设置Y轴刻度为带逗号的百分比格式
fig.update_yaxes(
    range=[0, 100],
    tickformat=',.2%',  # 逗号分隔小数的百分比格式
    locale='pt-br'  # 指定区域,确保逗号作为小数分隔符生效
)

fig.show()

关键修改说明:

  • Y轴格式:通过tickformat=',.2%'和locale='pt-br',强制Y轴刻度显示为逗号分隔的百分比格式。
  • 条形文本:用replace('.', ',')将格式化后的小数点替换为逗号,保证数值显示符合要求。
  • 图例设置:每个技术作为独立Trace并设置name,再通过legend参数将图例定位在图表顶部水平居中,同时调整顶部边距避免遮挡内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:05:37