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

如何为PCA双标图中的载荷向量设置不同颜色?

为PCA载荷向量设置不同颜色

你已经成功筛选出对PC1、PC2贡献最大的载荷变量(Petal.Length和Sepal.Width),要给这两个载荷向量(箭头)和标签设置不同颜色,可以通过修改ggfortify生成的图层数据和美学映射来实现,具体代码如下:

library(tibble)
library(ggplot2)
library(ggfortify)
library(tidyverse)

pca <- prcomp(iris[, 1:4], scale.=TRUE)

# 找出对PC1和PC2贡献最大的载荷变量
pca_loadings <- pca$rotation %>%
  as_tibble(rownames="measurement")

pca_topmeasurement <- pca_loadings %>%
  select(measurement, PC1, PC2) %>%
  pivot_longer(matches("PC"), names_to = "PC", values_to = "loading") %>%
  group_by(PC) %>%
  arrange(desc(abs(loading))) %>%
  slice(1:1) %>%
  pull(measurement) %>%
  unique()

# 生成基础PCA双图
pca_bi <- autoplot(pca, x=1, y=2, data=iris, colour='Species', loadings=TRUE, loadings.label=TRUE) +
  ggtitle("PCA双图(高亮关键载荷)")

# 筛选并修改载荷箭头图层的数据,添加颜色映射
loadings_segment_data <- pca_bi$layers[[2]]$data[pca_topmeasurement, ] %>%
  mutate(colour = case_when(
    rownames(.) == "Petal.Length" ~ "#e74c3c",  # 给Petal.Length设置红色
    rownames(.) == "Sepal.Width" ~ "#3498db"    # 给Sepal.Width设置蓝色
  ))
pca_bi$layers[[2]]$data <- loadings_segment_data
# 更新箭头图层的美学映射,使用自定义颜色
pca_bi$layers[[2]]$mapping <- aes(xend = x, yend = y, colour = colour)

# 筛选并修改载荷标签图层的数据,同步颜色
loadings_label_data <- pca_bi$layers[[3]]$data[pca_topmeasurement, ] %>%
  mutate(colour = case_when(
    rownames(.) == "Petal.Length" ~ "#e74c3c",
    rownames(.) == "Sepal.Width" ~ "#3498db"
  ))
pca_bi$layers[[3]]$data <- loadings_label_data
# 更新标签图层的美学映射
pca_bi$layers[[3]]$mapping <- aes(label = label, colour = colour)

# 可选:统一管理图例颜色,确保物种和载荷颜色都正确显示
pca_bi <- pca_bi + scale_colour_manual(
  values = c(
    "setosa"="#9b59b6", "versicolor"="#2ecc71", "virginica"="#f1c40f",
    "Petal.Length"="#e74c3c", "Sepal.Width"="#3498db"
  )
)

print(pca_bi)

关键说明:

  • 通过mutate给筛选后的载荷数据添加colour列,为每个目标变量指定专属颜色
  • 更新geom_segment(箭头)和geom_text(标签)图层的美学映射,让它们绑定自定义的颜色列
  • 可根据需求替换颜色值,或通过scale_colour_manual统一管理所有元素的颜色,保证图例显示准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:26