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

Python中如何移除PCA双标图箭头标签并将其置于图外?

解决PCA双标图标签混乱并移至图外的方法

核心思路

先取消双标图自带的箭头标签,再手动创建整齐的图例并放置到图外,同时调整布局避免截断。

修改后的代码示例

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

# 绘制不带箭头标签的双标图(若cluster.biplot无直接关闭标签的参数,可跳过此步用下方替代方案)
cluster.biplot(
    cscore=pca_scores, 
    loadings=loadings, 
    labels=None,  # 若不需要样本点标签可设置为None
    var1=round(pca.explained_variance_ratio_[0]*100, 2),
    var2=round(pca.explained_variance_ratio_[1]*100, 2),
    show_var_labels=False  # 关闭箭头自带的变量标签,无此参数则注释
)

# 【替代方案】若无法直接关闭箭头标签,先绘制原图再移除自带标签
# cluster.biplot(cscore=pca_scores, loadings=loadings, labels=new_df1.columns.values, var1=..., var2=...)
# for text in ax.texts:
#     text.remove()  # 删除所有自动生成的箭头标签

# 创建自定义图例条目,匹配箭头样式(颜色、粗细可根据实际图调整)
custom_lines = [Line2D([0], [0], color='#1f77b4', lw=2, linestyle='-') for _ in new_df1.columns]

# 将图例移至图外右侧垂直居中位置,并调整布局
ax.legend(
    custom_lines, 
    new_df1.columns.values, 
    loc='center left', 
    bbox_to_anchor=(1, 0.5),  # (1,0.5)表示图右侧中间位置
    frameon=False  # 可选:去掉图例边框
)
plt.subplots_adjust(right=0.8)  # 调整右侧留白,防止图例被截断
plt.show()

关键说明

  • 若cluster.biplot提供show_var_labels类参数,直接关闭即可避免自带标签;若无此参数,通过遍历ax.texts删除所有自动生成的标签文本。
  • bbox_to_anchor用于将图例锚定在图外,数值可根据需求微调(比如(1.1, 0.5)可让图例更靠右)。
  • subplots_adjust的right参数可根据标签长度调整,确保图例完整显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:38:12