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

Python中如何为散点图生成规范图例并优化标记颜色饱和度

箱线图+散点图:图例与颜色问题解决

修改后的完整代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

x = [24.4, 6.7, 19.7, 16.0, 25.1, 19.5, 10, 22.1]

f, ax = plt.subplots()
ax.boxplot(x, vert=False, showmeans=True, showfliers=False)
x0 = np.random.normal(1, 0.05, len(x))
c = ['r', 'b', 'c', 'm', 'y', 'g', 'm', 'k']
lab = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']

# 移除alpha参数让颜色更鲜明,也可根据需求设置alpha=0.8这类接近1的值
ax.scatter(x, x0, c=c, s=60)

# 手动构建图例标记,匹配每个类别颜色与标签
handles = [Line2D([0], [0], marker='o', color='w', markerfacecolor=clr, markersize=8, label=lbl) 
           for clr, lbl in zip(c, lab)]
ax.legend(handles=handles, loc="upper left", ncol=8)

plt.show()

问题修复说明

  1. 颜色过浅问题
    原代码中alpha=0.2将散点透明度设为20%,直接导致颜色淡化。移除该参数(或调整为alpha=0.8/1)即可让散点颜色恢复鲜明。

  2. 图例无对应彩色标记问题
    使用ax.scatter一次性绘制多色点时,matplotlib会把所有点当作单个绘图对象,直接传labels=lab无法生成每个点的独立图例条目。通过Line2D手动创建每个颜色的球形标记作为图例的handle,就能让图例正确显示每个类别对应的彩色标记。

内容的提问来源于stack exchange,提问作者Yeping Sun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:06:22