本文档使用{ggplot2}
和解释了 PCA、聚类、LFDA 和 MDS 相关绘图{ggfortify}
。
绘制 PCA(主成分分析)
{ggfortify}
让我们{ggplot2}
知道如何解释 PCA 对象。加载后{ggfortify}
,您可以ggplot2::autoplot
对stats::prcomp
和stats::princomp
对象使用函数。
library(ggfortify)
df <- iris[1:4]
pca_res <- prcomp(df, scale. = TRUE)
autoplot(pca_res)
PCA 结果应仅包含数值。如果要通过原始数据具有的非数字值进行着色,请使用data
关键字传递原始数据,然后通过colour
关键字指定列名。使用help(autoplot.prcomp)
(或help(autoplot.*)
用于任何其他对象)检查可用选项。
autoplot(pca_res, data = iris, colour = 'Species')
传递使用label = TRUE
绘制每个数据标签rownames
autoplot(pca_res, data = iris, colour = 'Species', label = TRUE, label.size = 3)
通过shape = FALSE
使情节没有分。在这种情况下,label
除非另有说明,否则将打开。
autoplot(pca_res, data = iris, colour = 'Species', shape = FALSE, label.size = 3)
通过loadings = TRUE
绘制特征向量。
autoplot(pca_res, data = iris, colour = 'Species', loadings = TRUE)
您可以附加特征向量标签并更改一些选项。
autoplot(pca_res, data = iris, colour = 'Species',
loadings = TRUE, loadings.colour = 'blue',
loadings.label = TRUE, loadings.label.size = 3)
默认情况下,每个组件的缩放比例都与标准相同biplot
。您可以通过指定禁用缩放scale = 0
autoplot(pca_res, scale = 0)
绘图因子分析
{ggfortify}
stats::factanal
以与 PCA 相同的方式支持对象。可用选项与 PCA 相同。
重要提示您必须scores
在调用计算factanal
疮口时指定选项(默认scores = NULL
)。否则,绘图将失败。
d.factanal <- factanal(state.x77, factors = 3, scores = 'regression')
autoplot(d.factanal, data = state.x77, colour = 'Income')
autoplot(d.factanal, label = TRUE, label.size = 3,
loadings = TRUE, loadings.label = TRUE, loadings.label.size = 3)
绘制 K 均值
{ggfortify}
支持stats::kmeans
类。您必须autoplot
通过data
关键字显式地将原始数据传递给函数。因为kmeans
对象不存储原始数据。结果将按分类聚类自动着色。
set.seed(1)
autoplot(kmeans(USArrests, 3), data = USArrests)
autoplot(kmeans(USArrests, 3), data = USArrests, label = TRUE, label.size = 3)
绘制集群包
{ggfortify}
支持cluster::clara
, cluster::fanny
,cluster::pam
以及cluster::silhouette
类。因为这些实例应该在其属性中包含原始数据,所以不需要显式传递原始数据。
library(cluster)
autoplot(clara(iris[-5], 3))
指定frame = TRUE
在autoplot
为stats::kmeans
和cluster::*
为每个群集平凸形的。
autoplot(fanny(iris[-5], 3), frame = TRUE)
如果需要概率椭圆,{ggplot2}
则需要 1.0.0 或更高版本。通过选项指定ggplot2::stat_ellipse'stype
关键字中支持的任何内容frame.type
。
autoplot(pam(iris[-5], 3), frame = TRUE, frame.type = 'norm')
如果您想要一个轮廓图,请将一个轮廓对象传递给autoplot
函数。
autoplot(silhouette(pam(iris[-5], 3L)))
有关轮廓图及其使用方法的更多信息,请参阅 基础 R 示例、 scikit-learn 示例和 原始论文。
使用{lfda}
包绘制局部 Fisher 判别分析
{lfda}
包支持一组本地Fisher判别分析方法。您可以使用autoplot
与 PCA 相同的方式绘制分析结果。
library(lfda)
# Local Fisher Discriminant Analysis (LFDA)
model <- lfda(iris[-5], iris[, 5], r = 3, metric="plain")
autoplot(model, data = iris, frame = TRUE, frame.colour = 'Species')
# Semi-supervised Local Fisher Discriminant Analysis (SELF)
model <- self(iris[-5], iris[, 5], beta = 0.1, r = 3, metric="plain")
autoplot(model, data = iris, frame = TRUE, frame.colour = 'Species')
绘制多维缩放
绘图前
即使 MDS 函数返回matrix
or list
(非特定类),{ggfortify}
也可以从list
属性推断背景类并执行autoplot
.
注意matrix
不支持推断自。
NOTE {ggfortify}
可以将stats::dist
实例绘制为热图。
autoplot(eurodist)
绘制经典(公制)多维缩放
stats::cmdscale
执行 Classical MDS 并返回点坐标为matrix
,因此autoplot
在这种情况下您不能使用。然而,无论是eig = TRUE
,add = True
还是x.ret = True
被指定,stats::cmdscale
返回list
代替matrix
。在这些情况下,{ggfortify}
可以推断如何通过autoplot
. 请参阅以help(cmdscale)
检查这些选项是什么。
autoplot(cmdscale(eurodist, eig = TRUE))
指定label = TRUE
绘制标签。
autoplot(cmdscale(eurodist, eig = TRUE), label = TRUE, label.size = 3)
绘制非度量多维缩放
MASS::isoMDS
并MASS::sammon
执行非度量 MDS 并返回list
包含点坐标。因此,autoplot
可以使用。
注意在背景上,autoplot.matrix
被调用以绘制 MDS。请参阅help(autoplot.matrix)
以检查可用选项。
library(MASS)
autoplot(isoMDS(eurodist), colour = 'orange', size = 4, shape = 3)
## initial value 7.505733
## final value 7.505688
## converged
通过shape = FALSE
使情节没有分。在这种情况下,label
除非另有说明,否则将打开。
autoplot(sammon(eurodist), shape = FALSE, label.colour = 'blue', label.size = 3)
## Initial stress : 0.01705
## stress after 10 iters: 0.00951, magic = 0.500
## stress after 20 iters: 0.00941, magic = 0.500