Sang Chul Choi
2008-May-02 17:04 UTC
[R] A horizontal or vertical line draw on mosaic plot?
Hi,
I want to have a horizontal line on a mosaic plot with "vcd" package.
This would give me an idea where is 0.5 proportion in a cell. Using
"mosaicplot" function of "graphics" package, I can draw a
line using
"abline." But, with "mosaic" function of "vcd"
package, I have tried
to use "abline" function, which complains "plot.new has not been
called yet".
Is there a way to draw lines across a mosaic plot?
=======================================================library(vcd)
music = c(210, 194, 170, 110,
190, 406, 730, 290)
dim(music) = c(2, 4)
dimnames(music) = list(Age = c("Old", "Young"),
Education = c("High", "Low",
"Upper", "Lower"))
mosaic(music, keep_aspect_ratio=FALSE)
abline(h=0.5)
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) :
plot.new has not been called yet
=======================================================
Thank you,
Sang Chul
Sang Chul Choi <Choi <at> biology.rutgers.edu> writes:> I want to have a horizontal line on a mosaic plot with "vcd" package. > This would give me an idea where is 0.5 proportion in a cell. Using > "mosaicplot" function of "graphics" package, I can draw a line using > "abline." But, with "mosaic" function of "vcd" package, I have tried > to use "abline" function, which complains "plot.new has not been > called yet". > > Is there a way to draw lines across a mosaic plot? > > =======================================================> library(vcd) > music = c(210, 194, 170, 110, > 190, 406, 730, 290) > dim(music) = c(2, 4) > dimnames(music) = list(Age = c("Old", "Young"), > Education = c("High", "Low", "Upper", "Lower")) > mosaic(music, keep_aspect_ratio=FALSE) > abline(h=0.5) > Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : > plot.new has not been called yet > =======================================================Not that easy. vcd uses grid graphics, which is a medium-to-low level package; for example, lattice also uses grid graphics, and abline would not help. You could draw directly using grid graphics, but it may be a bit of reading. Use the example on the bottom of the strucplot page as a starter, which changes color. Also see page 17 of strucplot.pdf in the doc-directory of vcd for an example how to draw a frame around a rectangle. grid.edit("rect:Class=1st,Sex=Male,Age=Adult,Survived=Yes", gp = gpar(fill = "red")) Dieter