我想为biplot主组件分析创建一个prcomp。但是,由于我的矩阵中有很多行,所以我不想打印所有这些标签。我主要关心的是总体分布,而不是所有细节。所以我只想用点来表示数据点,而不是标签。我该怎么做?
现在我做了这样的事情:
biplot(prcomp(data, scale.=T), xlabs=rep(".", nrow(data)))但我担心的是,这是使用字符'.',它将位于文本的基线上,并且距离实际的点有很小的距离,从而给出了一个整体移位的外观。这种担心有道理吗?如何才能避免这种情况?还有更简单的选择吗?
除了到处都有点点外,任何标出远离图表中心的离群点的解决方案都可以得到额外的积分。但这听起来确实很棘手。
看看stats:::biplot.default,以及它如何调用plot(x, type = "n", …),很可能并不打算自己绘制点,所以我担心我想要的可能甚至是不可能的。但也许有某种技巧可以解决这个问题。
发布于 2014-03-14 16:59:26
我觉得你的“。”将是垂直中心,而不是移动到底部(我认为这是你所关心的?)
比较不同的实验室:
set.seed(123) #thanks to MvG for spotting
data = cbind(rnorm(25), rnorm(25), rnorm(25))
biplot(prcomp(data, scale.=T), xlabs=rep(".", nrow(data))) #your code
X11()
biplot(prcomp(data, scale.=T), xlabs=rep("·", nrow(data))) #"middle dot"
X11()
biplot(prcomp(data, scale.=T), xlabs=rep("˙", nrow(data))) #"dot above"
X11()
biplot(prcomp(data, scale.=T), xlabs=rep(".·˙", nrow(data))) #all three
X11()
biplot(prcomp(data, scale.=T), xlabs=rep("I", nrow(data)))在我看来(Win7上的R-3.0.1),情节似乎考虑到了角色的大小/形状,因为三个单点示例实际上是相同的,尽管它们的相对垂直位置,而且都出现在“i”被绘制的中间。
如果您了解如何从prcomp输出生成双图值(我不理解):
str(prcomp(data, scale.=T)你可以用
xlabs=rep("", nrow(data))然后加上人工生成的points(),但是我认为它看起来是一样的。您的xlab也不限于使用键盘上可以看到的内容,因为您可以使用各种特殊字符,例如▲。
https://stackoverflow.com/questions/22403753
复制相似问题