soccerplots雷达图数字显示不全问题求助
问题描述
使用soccerplots库绘制雷达图时,图中的数字被截断一半。已尝试调整z-order、绘图顺序、颜色、字体及透明度,但问题仍未解决。mplsoccer库可正常运行,推测需更新soccerplots包以解决z-order层级问题。
问题现象:雷达图的数值标签仅显示上半部分,下半部分被图层遮挡截断。
原代码:
import numpy as np import matplotlib.pyplot as plt from math import pi from soccerplots.radar_chart import Radar # Parameter names params = ['xAssist', 'Key Passes', 'Crosses Into Box', 'Cross Completion %', 'Deep Completions', 'Progressive Passes', 'Prog. Pass Accuracy', 'Dribbles', 'Progressive Runs', 'PADJ Interceptions', 'Succ. Def. Actions', 'Def Duel Win %'] # Range values ranges = [(0.0, 0.15), (0.0, 0.67), (0.06, 6.3), (19.51, 50.0), (0.35, 1.61), (6.45, 11.94), (62.9, 79.4), (0.43, 4.08), (0.6, 2.33), (4.74, 7.2), (8.59, 12.48), (50.66, 66.67)] # Parameter values values = [0.11, 0.53, 0.70, 27.66, 1.05, 6.84, 84.62, 4.56, 2.22, 5.93, 8.88, 64.29] # Plot radar fig, ax = radar.plot_radar(ranges=ranges, params=params, values=values, radar_color=['#B6282F', '#808080'], zorder=1, alphas=[0.3]) ## instantiate object radar = Radar(background_color="#121212", patch_color="#28252C", label_color="#F0FFF0", range_color="#F0FFF0", fontfamily="Arial", ) plt.show()
解决方案
1. 修正代码执行顺序
原代码存在核心逻辑错误:在调用radar.plot_radar()之后才实例化Radar对象,这会导致未定义行为,是引发显示问题的直接诱因。必须先创建Radar实例,再调用绘图方法。
2. 更新soccerplots包
soccerplots早期版本确实存在z-order层级问题,导致数值标签被雷达图层遮挡。执行以下命令更新到最新版本:
pip install --upgrade soccerplots
3. 修正后的完整代码
import numpy as np import matplotlib.pyplot as plt from soccerplots.radar_chart import Radar # Parameter names params = ['xAssist', 'Key Passes', 'Crosses Into Box', 'Cross Completion %', 'Deep Completions', 'Progressive Passes', 'Prog. Pass Accuracy', 'Dribbles', 'Progressive Runs', 'PADJ Interceptions', 'Succ. Def. Actions', 'Def Duel Win %'] # Range values ranges = [(0.0, 0.15), (0.0, 0.67), (0.06, 6.3), (19.51, 50.0), (0.35, 1.61), (6.45, 11.94), (62.9, 79.4), (0.43, 4.08), (0.6, 2.33), (4.74, 7.2), (8.59, 12.48), (50.66, 66.67)] # Parameter values values = [0.11, 0.53, 0.70, 27.66, 1.05, 6.84, 84.62, 4.56, 2.22, 5.93, 8.88, 64.29] # 先实例化Radar对象 radar = Radar(background_color="#121212", patch_color="#28252C", label_color="#F0FFF0", range_color="#F0FFF0", fontfamily="Arial") # 再调用绘图方法 fig, ax = radar.plot_radar(ranges=ranges, params=params, values=values, radar_color=['#B6282F', '#808080'], zorder=1, alphas=[0.3]) plt.show()
4. 额外优化建议
如果更新包和修正顺序后仍有轻微截断,可尝试:
- 在
Radar实例化时添加fontsize参数调整字体大小,例如fontsize=10 - 绘图后执行
plt.tight_layout()自动调整图表布局,或通过ax.set_ylim()手动扩展y轴范围
内容的提问来源于stack exchange,提问作者PhilippK
相关产品推荐
相关产品推荐

