如何用Python Plotly制作美观的足球球员数据雷达图并导出图片
定制Plotly足球球员能力雷达图实现方案
可行性说明
完全可以通过调整Plotly的原生样式参数实现你需要的设计感雷达图,同时支持批量生成随机球员数据、单人单图生成、批量导出高清图片的全流程需求。
实现步骤
- 依赖准备:需额外安装
kaleido库支持静态图片导出,全量依赖安装命令:pip install plotly numpy kaleido - 随机球员数据生成:通过numpy生成指定数量的球员能力值,数值范围可自定义对齐你需要的评分体系
- 雷达图样式定制:针对参考图的设计风格调整网格线、背景色、填充区域、标签字体等参数
- 批量导出:循环处理每个球员数据,单独生成图表后导出为PNG格式
完整可运行代码
import plotly.graph_objects as go import numpy as np # 配置参数 CATEGORIES = ['防守', '速度', '进攻', '技术', '团队协作'] PLAYER_COUNT = 20 # 生成球员数量 SCORE_RANGE = [0, 5] # 能力值范围 EXPORT_SIZE = 800 # 导出图片尺寸 # 1. 随机生成球员能力数据 players = [] for i in range(PLAYER_COUNT): player_name = f"球员_{i+1}" # 生成随机能力值,保留1位小数 scores = np.round(np.random.uniform(low=SCORE_RANGE[0], high=SCORE_RANGE[1], size=len(CATEGORIES)), 1) players.append({"name": player_name, "scores": scores}) # 2. 批量生成雷达图并导出 for player in players: fig = go.Figure() # 添加球员能力轨迹 fig.add_trace(go.Scatterpolar( r=player["scores"], theta=CATEGORIES, fill='toself', fillcolor='rgba(230, 57, 70, 0.4)', # 填充色半透明,可自定义配色 line=dict(color='#e63946', width=2), # 边框色 name=player["name"] )) # 样式调整,匹配精致设计感 fig.update_layout( polar=dict( bgcolor='#f8f9fa', # 雷达图区域背景色 radialaxis=dict( visible=True, range=SCORE_RANGE, gridcolor='#dee2e6', # 径向网格线颜色 linecolor='#adb5bd', # 径向轴线颜色 tickfont=dict(size=10, color='#495057'), dtick=1 # 刻度间隔 ), angularaxis=dict( gridcolor='#dee2e6', # 角度网格线颜色 linecolor='#adb5bd', font=dict(size=12, color='#212529') ) ), paper_bgcolor='white', # 整张图背景色 showlegend=True, legend=dict(font=dict(size=14)), title=dict(text=f"{player['name']}能力雷达图", x=0.5, font=dict(size=16)), margin=dict(l=80, r=80, t=80, b=80) ) # 导出为PNG,scale=2生成高清图 fig.write_image(f"./{player['name']}_能力雷达图.png", width=EXPORT_SIZE, height=EXPORT_SIZE, scale=2)
样式自定义说明
如果需要进一步调整效果,可以直接修改对应参数:
- 修改
CATEGORIES变量自定义能力维度的名称,支持中英文 - 修改
fillcolor和line参数调整填充区域的颜色和透明度,可替换为球员所属俱乐部的主题色 - 调整
gridcolor、bgcolor参数修改网格和背景的配色 - 修改
dtick参数调整径向轴的刻度密度 - 调整
scale参数控制导出图片的清晰度,数值越高越清晰
内容的提问来源于stack exchange,提问作者Jeredriq Demas
相关产品推荐
相关产品推荐

