ggplot2中双标记的自编代码

时间:2017-02-02 01:02:34

标签: r ggplot2 data-visualization pca

我想拥有自己的脚本来绘制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()根本不起作用。

1 个答案:

答案 0 :(得分:2)

问题在于您的geom_text图层

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

loadings$PC2loadings$PC3的长度均为4,但label的长度为150.这些不是一起的。