[R] different x-axes in Lattice
Deepayan Sarkar
deepayan.sarkar at gmail.com
Thu Jan 28 12:34:11 CET 2010
On Sun, Jan 24, 2010 at 5:24 AM, Robert Ruser <robert.ruser at gmail.com> wrote:
> I use lattice package and 'barchart' to build a chart. I have a
> problem with setting different x-axes. Some x categories are missing
> but they are display and I don't want. I use scales = list(y =
> "free",x="free") but it works only for y-axes. Simple example:
>
> package(lattice)
> barchart(yield ~ variety | site, data = barley,
> groups = year, layout = c(1,6),
> scales = list(y = "free",x="free"),
> auto.key=list(rectangles = TRUE, space = "bottom"),
> )
>
> Let's assume that in the first panel 'Waseca' the category 'Velvet'
> are not available in data but in the chart there is a empty place. If
> more categories are not available it looks bad. Simple modification to
> illustrate my problem:
>
> barley2 <- barley[barley[,2]!="Velvet" | barley[,4]!="Waseca",]
> barchart(yield ~ variety | site, data = barley2,
> groups = year, layout = c(1,6),
> scales = list(y = "free",x="free"),
> auto.key=list(rectangles = TRUE, space = "bottom"),
> )
The short answer is that empty factor levels will be omitted only if
they are at the boundary (because what are actually plotted on the
x-axis here are the numeric factor codes). For example,
barchart(yield ~ reorder(variety, yield, length) | site, data = barley2,
groups = year, layout = c(1,6),
scales = list(y = "free",x="free"))
If you want to omit levels in the middle, you need to actually change
the internal codes using 'x[drop=TRUE]' where 'x' is your factor with
the missing levels. Lattice has no built-in facility to do that, but
you can do it yourself in custom prepanel and panel functions.
-Deepayan
More information about the R-help
mailing list