Plotly Go极坐标图显示异常修复:角度标签与数据映射问题
修复方案及代码调整
问题分析
- 角度标签错误:原代码生成了0-24的刻度文本,且刻度点数量不匹配24小时需求;
- 未展示VALUE2数据:代码中仅添加了VALUE1和VALUE3的轨迹,缺失需求中的VALUE2。
修复后的完整代码
import numpy as np import pandas as pd import random import plotly.graph_objects as go # 创建模拟数据 df = pd.DataFrame({'DATE_TIME': pd.date_range('2022-11-01', '2022-11-01 23:59:00', freq='20min'), 'ID': [random.randrange(1, 2) for n in range(72)]}) df['HOUR'] = df['DATE_TIME'].dt.hour df['MINUTE'] = df['DATE_TIME'].dt.minute df['VALUE3'] = np.random.uniform(50, 80, size=72) df['VALUE4'] = np.random.uniform(45, 75, size=72) df['VALUE1'] = np.random.uniform(110, 180, size=72) df['VALUE2'] = np.random.uniform(90, 130, size=72) df = df[(df.ID == 1)] # 计算分钟级对应的极坐标角度 df['total_minutes'] = df['DATE_TIME'].dt.hour * 60 + df['DATE_TIME'].dt.minute minute_angles = np.linspace(0, 2 * np.pi, 24 * 60, endpoint=False) df['theta'] = minute_angles[df['total_minutes']] fig = go.Figure() # 添加VALUE1轨迹 fig.add_trace(go.Scatterpolar( r=df['VALUE1'], theta=df['theta'], fill='toself', name='VALUE1', line=dict(color='red') )) # 添加VALUE2轨迹(原代码缺失) fig.add_trace(go.Scatterpolar( r=df['VALUE2'], theta=df['theta'], fill='toself', name='VALUE2', line=dict(color='green') )) # 添加VALUE3轨迹(保留原示例) fig.add_trace(go.Scatterpolar( r=df['VALUE3'], theta=df['theta'], fill='toself', name='VALUE3', line=dict(color='blue') )) fig.update_layout( polar=dict( radialaxis=dict(range=[0, 180]), angularaxis=dict( tickmode='array', # 生成24个均匀分布的角度刻度点,对应0-23小时 tickvals=np.linspace(0, 2 * np.pi, 24, endpoint=False), ticktext=list(range(24)), rotation=-90, direction='clockwise' ) ), showlegend=True, legend=dict(x=1, y=1.1, font=dict(size=8)) ) fig.show()
核心修复点
- 角度刻度修正:将
tickvals调整为24个均匀角度值,ticktext改为0-23的小时标签,匹配24小时制需求; - 补充VALUE2轨迹:新增对应
Scatterpolar组件,完整展示需求中的两个目标指标; - 保留分钟精度:维持原有的分钟级角度计算逻辑,确保每个数据点对应正确的时间位置。
内容的提问来源于stack exchange,提问作者dsapprentice
相关产品推荐
相关产品推荐

