A function to draw the major axes of a 3D ellipsoid from a correlation, covariance or sums of squares and cross products matrix.
Arguments
- x
A square positive definite matrix at least 3x3 in size. It will be treated as the correlation or covariance of a multivariate normal distribution.
- centre, center
The center of the ellipse
- scale
If x is a correlation matrix, then the standard deviations of each parameter can be given in the scale parameter. This defaults to
c(1, 1, 1)
, so no rescaling will be done.- level
The coverage level of a simultaneous region. The default is 0.95, for a 95% region. This is used to control the size of the ellipsoid.
- t
The size of the ellipsoid may also be controlled by specifying the value of a t-statistic on its boundary, which defaults to the square root of a chi-square statistic for a given
level
on 3 degrees of freedom.- which
An integer vector to select which variables from the object will be plotted. The default is the first 3.
- labels
Either a logical value, a character string, or a character vector of length 3. If
TRUE
, the default, the axes are labeled PC1, PC2, PC3. If a single character string, the digits 1, 2, 3 are pasted on the end.- label.ends
A vector of length 3 indicating which ends of the axes should be labeled, corresponding to a selection of rows of the 6 x 3 matrix of axes end points. Default:
c(2,4,6)
.- ...
Other arguments passed to
segments3d
andtext3d
.
See also
segments3d
,
text3d
, ellipse3d
Examples
data(iris)
iris3 <- iris[,1:3]
cov <- cov(iris3)
mu <- colMeans(iris3)
col <-c("blue", "green", "red")[iris$Species]
library(rgl)
#> Warning: package 'rgl' was built under R version 4.3.3
#>
#> Attaching package: 'rgl'
#> The following objects are masked from 'package:heplots':
#>
#> arrow3d, bbox3d
plot3d(iris3, type="s", size=0.4, col=col, cex=2, box=FALSE, aspect="iso")
plot3d( ellipse3d(cov, centre=mu, level=0.68), col="gray", alpha=0.2, add = TRUE)
3D plot
axes <- ellipse3d.axes(cov, centre=mu, level=0.68, color="gray", lwd=2)