【发布时间】:2020-08-18 05:25:08
【问题描述】:
我正在尝试创建前两个主要成分的分数图。我首先根据class 将数据拆分为三个数据框。然后我转换数据并执行 PCA。
我的数据如下:
14 1 82.0 12.80 7.60 1070 105 400
14 1 82.0 11.00 9.00 830 145 402
14 1 223.6 17.90 10.35 2200 135 500
15 1 164.0 14.50 9.80 1946 138 500
15 1 119.0 12.90 7.90 1190 140 400
15 1 74.5 7.50 6.30 653 177 350
15 1 74.5 11.13 8.28 930 113 402
16 1 279.5 14.30 9.40 1575 230 700
16 1 82.0 7.80 6.70 676 175 525
16 1 67.0 11.00 8.30 920 106 300
16 2 112.0 11.70 8.00 1353 140 560
16 2 149.0 12.80 8.70 1550 170 550
16 2 119.0 8.50 7.40 888 175 250
16 2 119.0 13.30 9.60 1275 157 450
16 2 238.5 14.90 8.90 1537 183 700
16 2 205.0 12.00 7.90 1292 201 600
16 2 82.0 9.40 6.20 611 209 175
16 2 119.0 15.95 10.25 1350 145 450
16 2 194.0 16.74 10.77 1700 120 450
17 2 336.0 22.20 10.90 3312 135 450
17 3 558.9 23.40 12.60 4920 152 600
17 3 287.0 14.30 9.40 1510 176 800
17 3 388.0 23.72 11.86 3625 140 500
17 3 164.0 11.90 9.80 900 190 600
17 3 194.0 14.40 9.20 1665 175 600
17 3 194.0 14.40 8.90 1640 175 600
17 3 186.3 9.70 8.00 1081 205 600
17 3 119.0 8.00 6.50 625 196 400
17 3 119.0 9.40 6.95 932 165 250
17 3 89.4 14.55 9.83 1378 146 400
第 1 列:type,第 2 列:class,第 3 列:v1,第 4 列:v2,第 5 列:v3,第 6 列:v4,第 7 列:@987654333 @,第 8 栏:v6
我的代码如下:
data <- read.csv("data.csv")
result <- split(data, data$class);
data1 <- result[[1]][,3:8];
data1Logged <- log10(data1)
pca.data1Logged = prcomp( ~ v1 +
v2 +
v3 +
v4 +
v5 +
v6,
data = data1Logged, scale. = FALSE );
data2 <- result[[2]][,3:8];
data2Logged <- log10(data2)
pca.data2Logged = prcomp( ~ v1 +
v2 +
v3 +
v4 +
v5 +
v6,
data = data2Logged, scale. = FALSE );
data3 <- result[[3]][,3:8];
data3Logged <- log10(data3)
pca.data3Logged = prcomp( ~ v1 +
v2 +
v3 +
v4 +
v5 +
v6,
data = data3Logged, scale. = FALSE );
对于三个class 中的每一个,我想为 PC1 和 PC2 绘制一个分数图:
pca.data1Logged$x[,1:2]
pca.data2Logged$x[,1:2]
pca.data3Logged$x[,1:2]
这是我能想到的最好的:
opar <- par(mfrow = c(1,3))
plot(pca.data1Logged$x[,1:2])
plot(pca.data2Logged$x[,1:2])
plot(pca.data3Logged$x[,1:2])
par(opar)
但我希望这个图可以缩放、着色、叠加等。我已经开始阅读有关 ggplot 的内容,但我没有这样做的经验。我想要以下内容:
https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html
上面的问题是我把数据分成了3个单独的数据框,所以没有“class1”、“class2”、“class3”的标题。
【问题讨论】:
-
为了让我们能够帮助您,您应该提供您的数据,帮助:how-to-make-a-great-r-reproducible-example。
-
@jay.sf 一会儿,我会试试的。原始数据太大,我得把它缩短。
-
@jay.sf 可以吗?
-
你链接的图只是
pr <- prcomp(iris[1:4], scale. = TRUE); plot(pr$x[, 1:2], col = iris$Species),所以你可以用你的图做类似的事情:pr <- prcomp(log10(data[, -(1:2)])); plot(pr$x[, 1:2], col = data$class) -
@jay.sf 好的,谢谢。我会记得的。
标签: r ggplot2 data-visualization pca