首页 > 解决方案 > 谁能帮我制作 PCA 3D 箱形图?

问题描述

我使用下面的代码来做 3D PCA,我只想制作一个 3D 箱形图。

Mydata = read.csv("PCA.csv")
head(Mydata)
pca = prcomp(Mydata[,6:11], scale. = TRUE)
summary(pca)
library(pca3d)
gr = factor(Mydata[,1])
pca3d(pca, group = gr)
dput(Mydata)
pca3d(pca,title = "Nanjing", axes.color= "black",group=gr, show.ellipses=TRUE,
      ellipse.ci=0.95,biplot=TRUE, biplot.vars=3, show.centroids= TRUE,show.group.labels=FALSE, show.plane=FALSE, legend = "topleft")

下载我使用的图像

snapshotPCA3d(file="Nanjing.png")

但它没有用,它显示了一个我不明白的警告文本(见下文)

警告消息:1:在 rgl.snapshot(filename = file, fmt = "png", top = TRUE) 中:RGL:PNG Pixmap Saver 警告:IHDR 中的图像宽度为零 2:在 rgl.snapshot(filename = file, fmt = "png", top = TRUE) : RGL: PNG Pixmap Saver 警告:图像高度在 IHDR 3 中为零:在 rgl.snapshot(filename = file, fmt = "png", top = TRUE) : RGL: PNG Pixmap Saver错误:无效的 IHDR 数据 4:在 rgl.snapshot(filename = file, fmt = "png", top = TRUE) :RGL:PNG Pixmap Saver 错误:发生错误 5:在 rgl.snapshot(filename = file, fmt = "png", top = TRUE) : 'rgl.snapshot' 失败

我使用的数据

structure(list(Location = c("Ningde Coastal Area", "Ningde Coastal Area", 
"Ningde Coastal Area", "Ningde Coastal Area", "Ningde Coastal Area", 
"Ningde Coastal Area", "Ningde Coastal Area", "Ningde Coastal Area", 
"Ningde Coastal Area", "Ningde Coastal Area", "Ningde Coastal Area", 
"Ningde Coastal Area", "Ningde Coastal Area", "Ningde Coastal Area", 
"Ningde Coastal Area", "Ningde Coastal Area", "Ningde Coastal Area", 
"Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", 
"Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", 
"Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", 
"Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", "Luoyuan Bay", 
"Luoyuan Bay"), Serial = c(14L, 15L, 17L, 18L, 19L, 20L, 21L, 
22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 
35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 
48L, 49L, 50L, 51L, 52L), Station = c("NDDZ031", "NDDZ034", "NDDZ035", 
"NDDZ041", "NDDZ046", "NDDZ048", "NDDZ050", "NDDZ055", "NDDZ058", 
"NDDZ065", "NDDZ066", "NDDZ068", "NDDZ072", "NDDZ073", "NDDZ074", 
"NDDZ080", "NDDZ082", "NDDZ91", "NDDZ92", "NDDZ94", "NDDZ95", 
"NDDZ96", "NDDZ97", "NDDZ98", "NDDZ99", "NDDZ103", "NDDZ105", 
"NDDZ106", "NDDZ107", "NDDZ112", "NDDZ113", "NDDZ114", "NDDZ115", 
"NDDZ116", "NDDZ117", "NDDZ119", "NDDZ122", "NDDZ123"), Longitude = c(119.8156314, 
119.8109757, 119.9013884, 120.1667206, 120.0796901, 119.7829741, 
119.9602213, 119.7401038, 120.1113902, 119.7060803, 120.1239972, 
119.7798066, 120.0968136, 119.7086703, 119.7827459, 120.0751752, 
120.0621476, 119.6875, 119.6641667, 119.7163889, 119.7425, 119.69, 
119.7719444, 119.6622222, 119.7544444, 119.6644444, 119.6875, 
119.7369444, 119.7672222, 119.6583333, 119.6327778, 119.5991667, 
119.6769444, 119.7019444, 119.7419444, 119.6216667, 119.6722222, 
119.6408333), Latitude = c(26.48095232, 26.51638163, 26.53300528, 
26.54343039, 26.56656159, 26.59238665, 26.6023812, 26.62635719, 
26.64614884, 26.70021888, 26.70684282, 26.72669529, 26.75513142, 
26.77262578, 26.7665767, 26.82756691, 26.6238606, 26.34944444, 
26.35972222, 26.36, 26.36027778, 26.37583333, 26.38277778, 26.38638889, 
26.39277778, 26.41055556, 26.41972222, 26.42833333, 26.42861111, 
26.43361111, 26.44416667, 26.45, 26.45, 26.44805556, 26.44805556, 
26.46638889, 26.47166667, 26.4775), MPs = c(101.1310963, 126.7889088, 
85.74767297, 153.5234525, 51.35979247, 42.82041038, 214.4548942, 
96.9063435, 155.5864259, 46.01889546, 97.50099786, 78.36325034, 
161.375366, 99.76091135, 59.82528502, 98.7524581, 110.3141717, 
89.08, 103.02, 89.61, 106.42, 36.85, 66.93, 81.39, 152.58, 171.61, 
105.34, 148.31, 293.68, 279.4, 248.44, 273.39, 131.06, 36.33, 
29.62, 89.07, 382.31, 170.27), Petrolium = c(26.41089103, 5.575674479, 
112.1713291, 15.76231172, 28.05251105, 15.56603488, 34.78641497, 
20.95268019, 11.97087574, 28.16452888, 45.10068937, 32.00209717, 
1.098327442, 195.4523585, 94.0545153, 20.3648651, 19.08090108, 
20.26723856, 35.12860786, 38.00639611, 485.9158071, 6.801285888, 
130.2613429, 26.41691724, 21.47363409, 75.24255785, 9.088017875, 
17.83869051, 106.4365614, 367.7372615, 26.95847112, 42.01753212, 
17.56582294, 72.00256098, 382.5705508, 150.0004825, 452.8679126, 
61.51137016), Sulfide = c(5.19, 0, 72.82, 19.49, 2.93, 0, 43.95, 
1.37, 23.27, 12.19, 35.69, 77.05, 4.03, 65.29, 55.12, 29.95, 
14.93, 15.16, 47.67, 30.23, 75.05, 10.51, 38.75, 21.64, 35.97, 
122.53, 6.95, 58.52, 75.92, 92.23, 10.85, 72.1, 28.46, 81.19, 
195.59, 42.54, 277.4, 81.67), PCB = c(5.76, 1.44, 8.84, 11.92, 
3.4, 17.08, 0.56, 10.56, 5.24, 1.96, 6.44, 9.44, 10.28, 12.92, 
14.52, 0, 7.84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0), PAH = c(23.36922085, 24.88374369, 21.49366333, 
25.69248678, 27.47334181, 36.56726931, 478.4803895, 39.12822287, 
17.2462056, 29.30102312, 232.0038657, 98.88904227, 22.6525315, 
31.41940388, 29.73926409, 36.20400715, 28.34097634, 0.0479, 0.0638, 
0.1312, 0.1293, 0.0589, 0.1032, 0.2725, 0.0712, 0.1173, 0.0703, 
0.2097, 0.1261, 0.0685, 0.0796, 0.1353, 0.0354, 0.0323, 0.034, 
0.0269, 0.0952, 0.0269), OCP = c(0.165265157, 0.004517346, 0.417073616, 
2.155375191, 0, 23.48084273, 0, 2.096700845, 1.852219063, 0.074522052, 
0.694281604, 0.112198511, 0.171174141, 4.644606351, 0.969985822, 
1.942156359, 2.36619641, 0.01071845, 0, 0, 0, 0, 0.004247812, 
0, 0, 0, 0.002020821, 0, 0.055799207, 0.003690873, 0.019063717, 
0, 0.173323781, 0.010429405, 0, 0, 0.013486877, 0)), class = "data.frame", row.names = c(NA, 
-38L))
                    

标签: rpca3d

解决方案


我使用了这段代码,它可以工作:

rgl.snapshot(filename = "PCA7gr.png",fmt="png",webshot2=TRUE)

推荐阅读