如何让我的标签与我的数据一起移动?

时间:2018-02-14 18:39:13

标签: r

我目前正在使用MethylKit来分析和绘制我的数据,我想使用可视化我的数据。我正在使用服务器并自动执行脚本,看起来虽然情节会发生变化,但标签的位置却不会如我在下面附带的两个图中所示。

我的代码如下:

extractmeth <- getData(meth)
isometh = matrix(nrow=nrow(meth), ncol=length(ids))
colnames(isometh) <- ids
project.pca <- prcomp(t(isometh))

#Determine the proportion of variance of each component
project.pca.proportionvariances <- ((project.pca$sdev^2) / (sum(project.pca$sdev^2)))*100


#Biplots
par(mar=c(4,4,4,4), mfrow=c(1,3), cex=1.0, cex.main=0.8, cex.axis=0.8)

#Plots scatter plot for PC 1 and 2
pdf(file="PCABiplotsPC1-2.pdf")
plot(project.pca$x, 
     type = "n", 
     main = "Principal components analysis bi-plot", 
     xlab = paste("PC1, ", round(project.pca.proportionvariances[1], 2), "%"),
     ylab = paste("PC2, ", round(project.pca.proportionvariances[2], 2), "%")
)
points(project.pca$x, col="black", pch=16, cex=1)
text(project.pca$x, labels=ids, cex= 0.7, pos=3)
dev.off()

#Plots scatter plot for PC 1 and 3
pdf(file="PCABiplotsPC1-3.pdf")
plot(project.pca$x[,1], project.pca$x[,3], 
     type = "n", 
     main = "Principal components analysis bi-plot", 
     xlab = paste("PC1, ", round(project.pca.proportionvariances[1], 2), "%"), 
     ylab = paste("PC3, ", round(project.pca.proportionvariances[3], 2), "%")
)
points(project.pca$x[,1], project.pca$x[,3], col="black", pch=16, cex=1)
text(project.pca$x, labels=ids, cex= 0.7, pos=3)
dev.off()

实际上,在写这篇文章的过程中,我注意到在第二个剧情的代码中,而不是:

text(project.pca$x, labels=ids, cex= 0.7, pos=3)

应该是:

text(project.pca$x[,1], project$x[,3], labels=ids, cex= 0.7, pos=3)

First PCA Plot

Second PCA Plot

1 个答案:

答案 0 :(得分:0)

由于您未在text调用中指定y坐标,所以会发生“如果缺少y,xy.coords(x, y)用于构建坐标。”

xy.coords传递data.frame或matrix时,它假定第1列是x,第2列是y。在您的示例中,这意味着包含所有主要组件坐标的project.pca$x在两次调用文本时都被解释为在前两列中提供x,y坐标。

因此,要获得PC1和PC3的正确协调,您可以使用

text(project.pca$x[,c(1,3)], labels=ids, cex= 0.7, pos=3)

text(x = project.pca$x[,1], y = project.pca$x[,3], labels=ids, cex= 0.7, pos=3)