Plot a Web of Connected Points
This plot can be used to graphically display a correlation matrix by using the linewidth between the nodes in proportion to the correlation of two variables. It will place the elements homogenously around a circle and draw connecting lines between the points.
PlotWeb(m, col = c(hred, hblue), lty = NULL, lwd = NULL, args.legend=NULL, pch = 21, pt.cex = 2, pt.col = "black", pt.bg = "darkgrey", cex.lab = 1, las = 1, adj = NULL, dist = 0.5, ...)
m |
a symmetric matrix of numeric values |
col |
the color for the connecting lines |
lty |
the line type for the connecting lines, the default will be |
lwd |
the line widths for the connecting lines. If left to |
args.legend |
list of additional arguments to be passed to the |
pch |
the plotting symbols appearing in the plot, as a non-negative numeric vector (see |
pt.cex |
expansion factor(s) for the points. |
pt.col |
the foreground color for the points, corresponding to its argument |
pt.bg |
the background color for the points, corresponding to its argument |
las |
alignment of the labels, 1 means horizontal, 2 radial and 3 vertical. |
adj |
adjustments for the labels. (Left: 0, Right: 1, Mid: 0.5) |
dist |
gives the distance of the labels from the outer circle. Default is 2. |
cex.lab |
the character extension for the labels. |
... |
dots are passed to plot. |
The function uses the lower triangular matrix of m
, so this is the order colors, linewidth etc. must be given, when the defaults are to be overrun.
A list of x and y coordinates, giving the coordinates of all the points drawn, useful for adding other elements to the plot.
Andri Signorell <andri@signorell.net>
m <- cor(d.pizza[, which(sapply(d.pizza, IsNumeric, na.rm=TRUE))[-c(1:2)]], use="pairwise.complete.obs") PlotWeb(m=m, col=c(hred, hblue), main="Pizza Correlation") # let's describe only the significant corrs and start with a dataset d.m <- d.pizza[, which(sapply(d.pizza, IsNumeric, na.rm=TRUE))[-c(1:2)]] # get the correlation matrix m <- cor(d.m, use="pairwise.complete.obs") # let's get rid of all non significant correlations ctest <- PairApply(d.m, function(x, y) cor.test(x, y)$p.value, symmetric=TRUE) # ok, got all the p-values, now replace > 0.05 with NAs m[ctest > 0.05] <- NA # How does that look like now? Format(m, na.form = ". ", ldigits=0, digits=3, align = "right") PlotWeb(m, las=2, cex=1.2) # define line widths PlotWeb(m, lwd=abs(m[lower.tri(m)] * 10))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.