我目前正在使用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)
答案 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)