[R] plot(type="h") equivalent in Lattice?

Deepayan Sarkar deepayan.sarkar at gmail.com
Sat Aug 20 06:58:11 CEST 2005


On 8/19/05, Maciej Kalisiak <mkalisiak at gmail.com> wrote:
> I tend to prefer doing graphics in R using the lattice library.  I'm
> "porting" some old scripts.  Is there a nice way to get in lattice the
> equivalent of the plot(type='h'), which is the high-density
> lines/histogram plot in base graphics package?  I tried doing this
> with barchart(), but with limited success... the fact that I have
> ~1000 datapoints/bars causes problems, in that R insists on rendering
> a tick/label for each bar, 

Yes, all (or most, at least) lattice functions will do that if the
variable is a factor or shingle (which barchart forces).

> and as far as I can tell the plot doesn't
> come out as accurate, due to running together of the bars (at least in
> plot(type='h') you are guaranteed that each bar/line is exactly one
> pixel wide)...

Your best bet is to coerce to numeric, and use xyplot, whose default
panel function honors type='h'. e.g.

xyplot(yield ~ as.numeric(variety) | site + year, 
       data = barley, type = 'h')

or for horizontal bars, 

xyplot(as.numeric(variety) ~ yield | site + year, 
       data = barley, type = 'h', horizontal = TRUE)

Had too many labels not been a problem, you could also have used

barchart(as.numeric(variety) ~ yield | site + year, 
         data = barley, panel = panel.xyplot, type = 'h')

Deepayan




More information about the R-help mailing list