ggplot2中双标图的自写代码
A self-written code for biplot in ggplot2
我想要自己的脚本来绘制 PCA 的载荷和分数。
主要问题是载荷和分数不是相同的单位测量值(在我的数据中)。我假设我需要以某种方式在我的代码中扩展负载。
在这里我尝试了一个关于虹膜数据的主成分分析双标图的例子,但是这段代码给出了一个错误:
Error: Don't know how to add o to a plot
# 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() 根本不起作用。
问题出在您的 geom_text
层
geom_text(data = loadings, aes(x=PC2, y=PC3, label=label),color="#006400")
loadings$PC2
和 loadings$PC3
的长度都是 4,但是 label
的长度是 150。它们不能放在一起。
我想要自己的脚本来绘制 PCA 的载荷和分数。 主要问题是载荷和分数不是相同的单位测量值(在我的数据中)。我假设我需要以某种方式在我的代码中扩展负载。 在这里我尝试了一个关于虹膜数据的主成分分析双标图的例子,但是这段代码给出了一个错误:
Error: Don't know how to add o to a plot
# 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() 根本不起作用。
问题出在您的 geom_text
层
geom_text(data = loadings, aes(x=PC2, y=PC3, label=label),color="#006400")
loadings$PC2
和 loadings$PC3
的长度都是 4,但是 label
的长度是 150。它们不能放在一起。