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

极坐标雷达图图例颜色与绘图颜色不匹配问题求助

解决极坐标雷达图图例颜色与绘图颜色不匹配的问题

问题原因分析

  1. 填充颜色与线条颜色不一致:原代码中plt.fill会自动使用颜色循环中的下一个颜色,导致填充区域和对应线条颜色不同,而图例仅显示线条颜色,造成视觉上的不匹配。
  2. 不必要的新创建图形:plt.figure(figsize=(10,10))放在绘图之后,会生成一个额外的空白图形,可能干扰绘图渲染逻辑。
  3. 冗余的图例标签传递:已在plt.polar中设置了label=row[0],再次向plt.legend传递Survey2["createdAt"]属于冗余操作,虽不直接导致颜色问题,但可能引发潜在的标签顺序错误。

修正后的代码

import matplotlib.pyplot as plt
import numpy as np

# 先创建指定尺寸的图形
plt.figure(figsize=(10, 10))

for row in Survey2.values.tolist():
    values = row[1:] + [row[1]]
    # 绘制线条并捕获Line2D对象以获取颜色
    line, = plt.polar(angles, values, 'o-', linewidth=0.5, label=row[0])
    # 使用线条的相同颜色填充区域
    plt.fill(angles, values, color=line.get_color(), alpha=0.25)

# 直接使用已设置的标签生成图例
plt.legend(loc=4, fontsize=7)
            
plt.title('PHQ-9,GAD-7 and Likert Scale over the study period', size=12, y=1.07)
plt.thetagrids(angles * 180 / np.pi, labels)

plt.show()

关键修正点

  • 统一填充与线条颜色:通过line.get_color()获取线条颜色,传递给plt.fill的color参数,确保填充区域和线条颜色一致。
  • 提前创建图形:将plt.figure(figsize=(10,10))移至绘图开始前,避免生成空白图形,确保所有绘图操作都在指定尺寸的图形上进行。
  • 简化图例生成:移除plt.legend中的标签参数,直接使用plt.polar中设置的标签,避免潜在的顺序不匹配问题。

内容的提问来源于stack exchange,提问作者Doaa A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:10:49