如何在Python雷达图中设置日期列为图例
解决Plotly雷达图图例按日期分类的问题
你当前的代码是按不同量表(GAD-7、PHQ-9等)生成雷达线,图例显示量表名称;要改成按日期分类,让每条线对应一个日期,图例展示日期,需要调整数据遍历的逻辑:
修改思路
- 假设你的
Survey数据框包含日期列(比如命名为Date),先提取所有唯一日期 - 针对每个日期,提取该日期下所有量表的分数,作为雷达线的
r值 - 每个日期对应一个
Scatterpolartrace,把name设为日期,这样图例就会显示日期
完整代码示例
import plotly.graph_objects as go # 定义雷达图的类别(各量表名称) categories = ['GAD-7','PHQ-9','Likert-Insomnia','Likert-Depression','Likert-Anxiety'] fig = go.Figure() # 按日期遍历,每个日期生成一条雷达线 for date in Survey['Date'].unique(): # 筛选当前日期的行 date_data = Survey[Survey['Date'] == date].iloc[0] # 提取该日期下各量表的分数,顺序和categories对应 scores = [ date_data['GAD7Score'], date_data['PHQ9Score'], date_data['Likert-Insomnia'], date_data['Likert-Depression'], date_data['Likert-Anxiety'] ] # 添加雷达线,name设为日期(图例显示内容) fig.add_trace(go.Scatterpolar( r=scores, theta=categories, # fill='toself', # 如果需要填充可以取消注释 name=str(date) )) # 保持原有的布局设置 fig.update_layout( polar=dict( radialaxis=dict( visible=True, range=[0, 7] )), showlegend=True ) fig.show()
关键说明
- 确保
Survey数据框的Date列格式正确,如果是datetime类型,转成字符串显示会更友好(str(date)) - 每个日期对应一行数据,包含所有量表的分数,这样
iloc[0]才能正确提取该日期的所有分数 - 生成的雷达图中,每条线代表一个日期的各量表分数,图例会显示对应的日期,方便对比不同时间点的分数变化
内容的提问来源于stack exchange,提问作者Doaa A
相关产品推荐
相关产品推荐

