[R] plot a vertical column of colored rectangles

Ortiz, John OrtizJ at si.edu
Sat Jul 16 20:23:19 CEST 2011

Hi Nacho,

You should look grid.rect or grid.polygon function from "grid" library.

I attach you an example, you can play with this:

dat <- c(0,0,0,0,1,1,1,0,0,1)

colour=ifelse(dat == 0, "red", "blue")

vp1 <- grid.layout(nrow = 1, ncol = 1,
                  widths = unit(0.80, "native"),
                  heights = unit(0.80, "native"))

pushViewport(viewport(width= unit(0.9, "npc"), height= unit(0.9,"npc"), 
                      xscale = c(0, 5), yscale = c(0, 15)))

foreach(i=1:10) %do% 
grid.rect(x=0, y=1+i, width=4, height=1,  draw=TRUE, default.units = 'native', gp=gpar(fill=colour[i]))


John Ortiz
Smithsonian Tropical Research Institute

>Hi, I've been really struggling with this.
>If I have a vector like
>dat <- c(0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,0)
>I want to plot each element as a colored rectangle (red=1, blue=1) in the
>right order, so they all stack up forming a vertical column on the graph.
>Sort of like a building, with each floor in the appropriate color.
>Any ideas?
>I've tried using ggplot and geom_tile, but my data has a million elements
>and the plots take forever to generate.
>I've also tried using a heatmap, but I need 2 columns at least, and I only
>have 1.

More information about the R-help mailing list