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

Plotly go.Scatterpolar雷达图显示数据值与修复刻度旋转问题

Plotly极坐标雷达图问题修复方案

针对两个问题可直接通过Plotly原生属性配置实现,无需额外依赖:

1. 径向轴0-5刻度异常旋转修复

该问题是极坐标径向轴刻度默认跟随所在角度自动旋转导致的,只需要给每个极坐标子图的径向轴配置tickangle=0,即可强制刻度文字保持水平不旋转。配置时建议同步手动设置径向轴范围,预留出外侧数值标注的空间,避免文字被裁切。

2. 数据点r值外侧标注实现

不需要做复杂的极坐标-直角坐标转换,直接叠加一层无标记、无描边的文本类型Scatterpolar图层即可实现外侧标注效果:

  • 文本图层的theta取值和原数据点完全一致,保证文字和对应数据点在同一条径向轴上
  • 文本图层的r取值在原数据r值基础上增加固定小偏移,让文字落在雷达图轮廓外侧、径向轴之外的位置,不会遮挡图表内容
  • 设置图层mode='text',隐藏图例避免冗余项,可按需调整文字大小、颜色匹配图表风格

修复后完整可运行代码

import plotly.graph_objects as go
from plotly.subplots import make_subplots

question = ["Q1", "Q2", "Q3", "Q4"]
datasets = [
    [5.60, 5.62, 5.60, 5.59],
    [5.60, 5.62, 5.60, 5.59],
    [5.60, 5.62, 5.60, 5.59],
    [5.60, 5.62, 5.60, 5.59]
]
trace_names = ["Graph 1", "Graph2", "Graph3", "Graph4"]
subplot_pos = [(1,1), (1,2), (2,1), (2,2)]

fig = make_subplots(rows=2, cols=2, specs=[[{'type': 'polar'}] * 2] * 2)

# 逐个添加雷达图本体和对应标注
for idx, pos in enumerate(subplot_pos):
    r_data = datasets[idx]
    # 添加雷达图主轨迹
    fig.add_trace(
        go.Scatterpolar(
            theta=question,
            r=r_data,
            name=trace_names[idx],
            fill='toself' # 不需要填充可直接删除该参数
        ),
        row=pos[0],
        col=pos[1]
    )
    # 添加外侧数值标注
    fig.add_trace(
        go.Scatterpolar(
            theta=question,
            r=[v + 0.35 for v in r_data], # 偏移量按需调整,控制文字和雷达图轮廓的间距
            text=[f"{v:.2f}" for v in r_data],
            mode='text',
            showlegend=False,
            textfont=dict(size=10, color='#333')
        ),
        row=pos[0],
        col=pos[1]
    )

# 统一配置四个极坐标子图,修复刻度旋转+设置轴范围
polar_base_config = dict(
    radialaxis=dict(
        range=[0, 6.5], # 最大值预留足够空间放外侧标注
        tickangle=0, # 强制径向刻度水平,修复旋转异常
        tickvals=[0,1,2,3,4,5] # 保留原0-5的刻度设置
    )
)
fig.update_layout(
    polar=polar_base_config,
    polar2=polar_base_config,
    polar3=polar_base_config,
    polar4=polar_base_config,
    margin=dict(l=20, r=20, t=40, b=20)
)

fig.show()

效果说明

运行代码后,径向刻度将保持水平无异常旋转,每个数据点对应的r值会显示在雷达轮廓外侧,和参考示意图效果一致。如果觉得文字和图形间距不合适,直接调整标注层r值的偏移量、径向轴range的最大值即可。

原问题效果参考:
当前雷达图效果
期望效果参考:
期望效果示意图

内容的提问来源于stack exchange,提问作者Jo-Achna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:06:20