【问题标题】:A self-written code for biplot in ggplot2ggplot2中biplot的自写代码
【发布时间】:2017-06-18 23:01:02
【问题描述】:

我想拥有自己的脚本来绘制 PCA 的负载和分数。 主要问题是载荷和分数不是相同的单位度量(在我的数据中)。我假设我需要在我的代码中以某种方式缩放负载。 在这里,我尝试了一个关于虹膜数据的 PCA 双图示例,但是这段代码给出了错误:

错误:不知道如何将 o 添加到绘图中

# mybiplot
# load data in
data <- (iris)
iris <- data[,1:4]
species <- data[,5]

# apply pca
pca <- prcomp(iris, center = TRUE,scale. = TRUE)

# extract scores and loadings
scores <- as.data.frame(pca$x)
loadings <- as.data.frame(pca$rotation) 
label <- species

# make biplot
p = ggplot()+
    geom_point(data = scores, aes(x=PC1, y=PC2, colour = factor(label)))+
    geom_segment(data = loadings, aes(x=0,y=0,xend=PC1,yend=PC2),
    arrow=arrow(length=unit(0.1,"cm")), color = "#DCDCDC")+
    geom_text(data = loadings, aes(x=PC2, y=PC3, label=label),color="#006400")
p

我想摆脱这个错误(并了解它发生的原因以及代码有什么问题),以及如何在一个双标图中获得分数和负载。 biplot(PCA) 显然有效,但我需要一个更灵活的自写代码。 ggbiplot() 和 autoplot() 根本不起作用。

【问题讨论】:

  • @DMR 我不认为这是您引用的问题的重复。是的,它们都是关于双图的,但这个问题不是你如何从头开始写一个图,而是这段代码有什么问题。
  • 这篇文章中投票最多的答案实际上不起作用。它是从 2011 年开始的。错误:geom_hline 需要以下缺失的美学:yintercept

标签: r ggplot2 data-visualization pca


【解决方案1】:

问题在于您的geom_text

geom_text(data = loadings, aes(x=PC2, y=PC3, label=label),color="#006400")

loadings$PC2loadings$PC3 的长度均为 4,但 label 的长度为 150。它们不能一起使用。

【讨论】:

  • 对!可能需要使用 as.factor() 函数从表中提取四个因子,而不是拥有所有表。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 2014-08-01
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多