On Fri, 8 Feb 2013, Richard M. Heiberger wrote:
require(vcd)
mosaic(matrix(1:6, 2, 3), gp=gpar(fill=c("red","gray","blue")), main="three
colors in each row")
mosaic(matrix(1:3, 1, 3), gp=gpar(fill=c("red","gray","blue")), main="only
one color in each row")
I anticipated three colors in the second plot. My guess is that there
is a matrix subscript without drop=FALSE somewhere on the inside of one
of the functions.
No, it's more subtle.
If the dimension of the data (1, 3) is not the same as that of the fill
(NULL), they are recycled along the last dimension (see Section 3 of
vignette("strucplot", package = "vcd")). Thus supplying a suitable fill
matrix works:
mosaic(matrix(1:3, 1, 3),
gp = gpar(fill=matrix(c("red","gray","blue"), 1, 3)))
David: The reason why Rich's original code does not work properly is that
the recycling is not triggered properly. In line 160 of strucplot.R we
check if(length(par) < size) which is not the case here and hence the
dimension is not added. I think we could do
if (length(par) < size | is.null(dim(par)))
aperm(array(par, dim = rev(d))) else par
That fixes the problem.
Best,
Z
This is with
Package: vcd
Version: 1.2-13
Date: 2012-02-19
on
version.string R Under development (unstable) (2013-02-02 r61822)
platform i386-w64-mingw32
arch i386
os mingw32
system i386, mingw32
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.