使用自动绘图绘制 PCA 双标图:修改箭头粗细
Plotting PCA biplot with autoplot: modify arrow thickness
我正在使用 ggfortify
中的 autoplot
函数,如下面使用 iris.pca
的代码所示。这个例子只有三个变量(因此有 3 个加载),但我的数据集有更多的变量,所以我希望我可以减小箭头的大小以使图表更易读。我认为默认大小是 1 pt,我想将它降低到 0.5 之类的值。虽然有修改加载颜色和标签大小的参数,但我找不到调整箭头粗细的方法。有人知道怎么做吗?
library(ggplot2)
library(ggfortify)
df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))
autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black")+
scale_colour_manual(values=c("forestgreen","red","blue"))+
scale_fill_manual(values=c("forestgreen","red","blue"))+
scale_shape_manual(values=c(25,22,23))+
theme_bw()
问题是ggfortify
已经创建了一个ggplot2对象。因此,如果您不想手动重新创建绘图(这将是更清晰的解决方案),您必须按以下方式修改现有绘图:
旧代码
library(ggplot2)
library(ggfortify)
df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))
d <- autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black", scale = 1)+
scale_colour_manual(values=c("forestgreen","red","blue")) +
scale_fill_manual(values=c("forestgreen","red","blue")) +
scale_shape_manual(values=c(25,22,23))+
theme_bw()
修改
d$layers[[2]]$aes_params$size <- 0.5
d$layers[[2]]$geom_params$arrow$length <- unit(6, units = "points")
d
这实际上是手动创建箭头线的尺寸美学,并缩小箭头的尖端:
我正在使用 ggfortify
中的 autoplot
函数,如下面使用 iris.pca
的代码所示。这个例子只有三个变量(因此有 3 个加载),但我的数据集有更多的变量,所以我希望我可以减小箭头的大小以使图表更易读。我认为默认大小是 1 pt,我想将它降低到 0.5 之类的值。虽然有修改加载颜色和标签大小的参数,但我找不到调整箭头粗细的方法。有人知道怎么做吗?
library(ggplot2)
library(ggfortify)
df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))
autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black")+
scale_colour_manual(values=c("forestgreen","red","blue"))+
scale_fill_manual(values=c("forestgreen","red","blue"))+
scale_shape_manual(values=c(25,22,23))+
theme_bw()
问题是ggfortify
已经创建了一个ggplot2对象。因此,如果您不想手动重新创建绘图(这将是更清晰的解决方案),您必须按以下方式修改现有绘图:
旧代码
library(ggplot2)
library(ggfortify)
df <- iris[c(1, 2, 3, 4)]
iris.pca<-(prcomp(df))
d <- autoplot(iris.pca, data=iris, colour="Species", loadings=TRUE, loadings.colour = "black", scale = 1)+
scale_colour_manual(values=c("forestgreen","red","blue")) +
scale_fill_manual(values=c("forestgreen","red","blue")) +
scale_shape_manual(values=c(25,22,23))+
theme_bw()
修改
d$layers[[2]]$aes_params$size <- 0.5
d$layers[[2]]$geom_params$arrow$length <- unit(6, units = "points")
d
这实际上是手动创建箭头线的尺寸美学,并缩小箭头的尖端: