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()
问题修复说明
颜色过浅问题
原代码中alpha=0.2将散点透明度设为20%,直接导致颜色淡化。移除该参数(或调整为alpha=0.8/1)即可让散点颜色恢复鲜明。图例无对应彩色标记问题
使用ax.scatter一次性绘制多色点时,matplotlib会把所有点当作单个绘图对象,直接传labels=lab无法生成每个点的独立图例条目。通过Line2D手动创建每个颜色的球形标记作为图例的handle,就能让图例正确显示每个类别对应的彩色标记。
内容的提问来源于stack exchange,提问作者Yeping Sun
相关产品推荐
相关产品推荐

