极坐标雷达图图例颜色与绘图颜色不匹配问题求助
解决极坐标雷达图图例颜色与绘图颜色不匹配的问题
问题原因分析
- 填充颜色与线条颜色不一致:原代码中
plt.fill会自动使用颜色循环中的下一个颜色,导致填充区域和对应线条颜色不同,而图例仅显示线条颜色,造成视觉上的不匹配。 - 不必要的新创建图形:
plt.figure(figsize=(10,10))放在绘图之后,会生成一个额外的空白图形,可能干扰绘图渲染逻辑。 - 冗余的图例标签传递:已在
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
相关产品推荐
相关产品推荐

