This function uses the diamondPlot() to visualise the results of a factor analyses. Because the factor loadings computed in factor analysis are point estimates, they may vary from sample to sample. The factor loadings for any given sample are usually not relevant; samples are but means to study populations, and so, researchers are usually interested in population values for the factor loadings. However, tables with lots of loadings can quickly become confusing and intimidating. This function aims to facilitate working with and interpreting factor analysis based on confidence intervals by visualising the factor loadings and their confidence intervals.

factorLoadingDiamondCIplot(fa, xlab = "Factor Loading",
  colors = (viridis::viridis_pal())(max(2, fa$factors)), labels = NULL,
  theme = ggplot2::theme_bw(), ...)



The object produced by the psych::fa() function from the psych::psych package. It is important that the n.iter argument of psych::fa() was set to a realistic number, because otherwise, no confidence intervals will be available.


The label for the x axis.


The colors used for the factors. The default uses the discrete viridis() palette, which is optimized for perceptual uniformity, maintaining its properties when printed in grayscale, and designed for colourblind readers. A vector can also be supplied; the colors must be valid arguments to colorRamp() (and therefore, to col2rgb()).


The labels to use for the items (on the Y axis).


The ggplot2 theme to use.

Additional arguments will be passed to ggDiamondLayer(). This can be used to set, for example, the transparency (alpha value) of the diamonds to a lower value using e.g. alpha=.5.


A ggplot2::ggplot() plot with several ggDiamondLayer()s is returned.

See also


# NOT RUN { ### (Not run during testing because it takes too long and ### may generate warnings because of the bootstrapping of ### the confidence intervals) factorLoadingDiamondCIplot(psych::fa(Bechtoldt, nfactors=2, n.iter=50, n.obs=200)); ### And using a lower alpha value for the diamonds to ### make them more transparent factorLoadingDiamondCIplot(psych::fa(Bechtoldt, nfactors=2, n.iter=50, n.obs=200), alpha=.5, size=1); # }