如何为prince库绘制的对应分析散点图添加标注
解决prince库对应分析散点图添加标注的方法
直接用matplotlib手动绘制并添加标注即可,步骤如下:
- 拟合CA模型并提取坐标数据
import prince import matplotlib.pyplot as plt # 拟合CA模型 ca = prince.CA() ca.fit(dummy_contingency) # 提取行、列的前两个主成分坐标 row_coords = ca.row_coordinates(dummy_contingency) col_coords = ca.column_coordinates(dummy_contingency)
- 手动绘制散点并添加标注
# 创建画布 plt.figure(figsize=(8, 6)) # 绘制行点(索引0-9,蓝色) plt.scatter(row_coords[0], row_coords[1], color='#1f77b4', label='行类别') # 为每个行点添加索引标注 for idx, (x, y) in enumerate(zip(row_coords[0], row_coords[1])): plt.text(x + 0.02, y + 0.02, str(idx), fontsize=9) # 绘制列点(v1-v4,橙色) plt.scatter(col_coords[0], col_coords[1], color='#ff7f0e', label='列类别') # 为每个列点添加名称标注 for col_name, (x, y) in col_coords.iterrows(): plt.text(x + 0.02, y + 0.02, col_name, fontsize=9) # 添加图表辅助元素 plt.xlabel(f'主成分1 ({round(ca.eigenvalues_[0]/sum(ca.eigenvalues_)*100, 1)}%)') plt.ylabel(f'主成分2 ({round(ca.eigenvalues_[1]/sum(ca.eigenvalues_)*100, 1)}%)') plt.title('对应分析散点图(带标注)') plt.legend() plt.grid(alpha=0.3) plt.show()
说明
- 通过
row_coordinates和column_coordinates直接提取行、列在主成分上的坐标,完全替代原plot_coordinates的功能; plt.text()的偏移量x+0.02、y+0.02可根据实际图形调整,避免标注覆盖散点;- 颜色可自行替换为需要的RGB值或颜色名称。
内容的提问来源于stack exchange,提问作者Kenneth Singh
相关产品推荐
相关产品推荐

