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

Marimekko图表数据标签字体大小统一或隐藏问题求助

解决方案:Marimekko图表数据标签字体大小问题

针对你遇到的「数据标签字体随区域面积变化、小区域字体难以辨认,无法设置统一大小或完全移除」的问题,提供以下三种可行方案:

方案1:设置统一字体大小+隐藏过小区域的标签

通过提前生成带条件判断的文本内容,既保证字体大小统一,又自动隐藏占比过小的区域标签,避免拥挤模糊。

修改步骤:

  1. 先定义标签显示阈值(比如占比≥5%才显示,可按需调整),生成对应文本列表:
# 定义标签显示阈值,占比小于该值则不显示标签
threshold = 5
text_data = {}
for key in data:
    text_data[key] = [f"{val:.0f}" if val >= threshold else "" for val in data[key]]
  1. 在绘制Bar图时,替换texttemplate为提前生成的text参数,并固定字体大小:
fig = go.Figure()
for key in data:
    fig.add_trace(go.Bar(name = key,
                     y = data[key],
                     x = np.cumsum(widths) - widths,
                     width = widths, offset = 0,
                     marker = {'color' : colors[key]},
                     customdata = data[key],
                     text = text_data[key],  # 使用带条件的文本
                     textposition = "inside",
                     textangle = 0,
                     textfont_color = "white",
                     textfont_size = 10))  # 设置统一字体大小,比如10

方案2:完全移除所有数据标签

如果不需要任何数据标签,直接删除所有与文本相关的参数即可:

fig = go.Figure()
for key in data:
    fig.add_trace(go.Bar(name = key,
                     y = data[key],
                     x = np.cumsum(widths) - widths,
                     width = widths, offset = 0,
                     marker = {'color' : colors[key]},
                     customdata = data[key]))

方案3:根据区域面积动态调整字体大小(可选)

若不想隐藏标签,而是让小区域字体更小但仍可辨认,可通过计算区域面积(宽度×高度)动态设置字体大小:

修改步骤:

  1. 计算每个区域的面积并映射到字体大小范围:
min_font_size = 6
max_font_size = 12
font_sizes = {}
for key in data:
    # 计算每个区域的面积(宽度×高度占比)
    areas = widths * data[key]
    # 将面积归一化到字体大小区间
    norm_areas = (areas - areas.min()) / (areas.max() - areas.min())
    font_sizes[key] = min_font_size + (max_font_size - min_font_size) * norm_areas
  1. 在绘制Bar图时,使用动态计算的字体大小:
fig = go.Figure()
for key in data:
    fig.add_trace(go.Bar(name = key,
                     y = data[key],
                     x = np.cumsum(widths) - widths,
                     width = widths, offset = 0,
                     marker = {'color' : colors[key]},
                     customdata = data[key],
                     texttemplate = "%{y:.0f}",
                     textposition = "inside",
                     textangle = 0,
                     textfont_color = "white",
                     textfont_size = font_sizes[key]))  # 使用动态字体大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:45:54