数据包含177个样本和13个变量的数据框;vintages包含类标签。这些数据是对生长在意大利同一地区但来自三个不同栽培品种的葡萄酒进行化学分析的结果:内比奥罗、巴贝拉和格里格诺葡萄。来自内比奥罗葡萄的葡萄酒被称为巴罗洛。
-
## 椭圆曲线图
-
elev=0.95, # 椭圆概率水平
-
pcol=NULL, # 手工添加颜色,必须满足长度的因素
-
cexsize=1, # 点大小
-
ppch=21, # 点类型,必须满足因素的长度
-
legcexsize=2, # 图例字体大小
-
legptsize=2, # 图例点尺寸
-
-
## 设定因子水平
-
if(is.factor(factr) {
-
f <- factr
-
} else {
-
f <- factor(factr, levels=unique(as.character(factr)))
-
}
-
intfactr <- as.integer(f) # 设置与因子水平相匹配的整数向量
-
-
## 获取椭圆的数据
-
edf <- data.frame(LV1 = x, LV2=y, factr = f) # 用数据和因子创建数据框
-
ellipses <- dlply(edf, .(factr), function(x) {
-
-
Ellipse(LV1, LV2, levels=elev, robust=TRUE, draw=FALSE) #从dataEllipse()函数中按因子水平获取置信度椭圆点
-
})
-
## 获取X和Y数据的范围
-
xrange <- plotat(range(c(as.vector(sapply(ellipses, function(x) x[,1])), min(x), max(x))))
-
## 为图块设置颜色
-
if(is.null(pcol) != TRUE) { # 如果颜色是由用户提供的
-
pgcol <- paste(pcol, "7e", sep="") # 增加不透明度
-
-
# 绘图图形
-
plot(x,y, type="n", xlab="", ylab="", main=""
-
abline(h=0, v=0, col="gray", lty=2) #在0添加线条
-
legpch <- c() # 收集图例数据的矢量
-
legcol <- c() # 收集图例col数据的向量
-
## 添加点、椭圆,并确定图例的颜色
-
## 图例
-
legend(x=legpos, legend=levels(f), pch=legpch,
-
## 使用prcomp()函数的PCA输出的轴图示
-
pcavar <- round((sdev^2)/sum((sdev^2))
-
plot(scores[,1], # X轴的数据
-
scores[,2], # Y轴的数据
-
vint, # 有类的因素
-
pcol=c(), # 用于绘图的颜色(必须与因素的数量相匹配)
-
pbgcol=FALSE, #点的边框是黑色的?
-
cexsize=1.5, # 点的大小
-
ppch=c(21:23), # 点的形状(必须与因子的数量相匹配)
-
legpos="bottom right", # 图例的位置
-
legcexsize=1.5, # 图例文字大小
-
legptsize=1.5, # 图例点的大小
-
axissize=1.5, # 设置轴的文字大小
-
linewidth=1.5 # 设置轴线尺寸
-
)
-
title(xlab=explain[["PC1"]], # PC1上解释的方差百分比
-
ylab=explain[["PC2"]], # PC2解释的方差百分比
-
main="Scores", # 标题
-
cex.lab=1.5, # 标签文字的大小
-
cex.main=1.5 # 标题文字的大小
-
-
plot(loadings[,1:2], # x和y数据
-
pch=21, # 点的形状
-
cex=1.5, # 点的大小
-
# type="n", # 不绘制点数
-
axes=FALSE, # 不打印坐标轴
-
xlab="", # 删除x标签
-
ylab="" # 删除y标签
-
)
-
pointLabel(loadings[,1:2], #设置标签的位置
-
labels=rownames(PCAloadings), # 输出标签
-
cex=1.5 # 设置标签的大小
-
) # pointLabel将尝试将文本放在点的周围
-
axis(1, # 显示x轴
-
cex.axis=1.5, # 设置文本的大小
-
lwd=1.5 # 设置轴线的大小
-
)
-
axis(2, # 显示y轴
-
las=2, # 参数设置文本的方向,2是垂直的
-
cex.axis=1.5, # 设置文本的大小
-
lwd=1.5 # 设置轴线的大小
-
)
-
title(xlab=explain[["PC1"]], # PC1所解释的方差百分比
-
ylab=explain[["PC2"]], # PC2解释的方差百分比
-
-
cex.lab=1.5, # 标签文字的大小
-
cex.main=1.5 # 标题文字的大小
-
)