geom_tile {ggplot2} | R Documentation |
Tile plot as densely as possible, assuming that every tile is the same size.
geom_tile(mapping=NULL, data=NULL, stat="identity", position="identity", ...)
mapping |
mapping between variables and aesthetics generated by aes |
data |
dataset used in this layer, if not specified uses plot dataset |
stat |
statistic used by this layer |
position |
position adjustment used by this layer |
... |
ignored |
Similar to levelplot and image.
This page describes geom_tile, see layer
and qplot
for how to create a complete plot from individual components.
A layer
The following aesthetics can be used with geom_tile. Aesthetics are mapped to variables in the data with the aes
function: geom\_tile(\code{aes}(x = var))
x
: x position (required)
y
: y position (required)
fill
: internal colour
colour
: border colour
size
: size
linetype
: line type
Hadley Wickham, http://had.co.nz/
## Not run: # Generate data pp <- function (n,r=4) { x <- seq(-r*pi, r*pi, len=n) df <- expand.grid(x=x, y=x) df$r <- sqrt(df$x^2 + df$y^2) df$z <- cos(df$r^2)*exp(-df$r/6) df } p <- ggplot(pp(20), aes(x=x,y=y)) p + geom_tile() #pretty useless! # Add aesthetic mappings p + geom_tile(aes(fill=z)) # Change scale p + geom_tile(aes(fill=z)) + scale_fill_gradient(low="green", high="red") # Use qplot instead qplot(x, y, data=pp(20), geom="tile", fill=z) qplot(x, y, data=pp(100), geom="tile", fill=z) # Missing values p <- ggplot(pp(20)[sample(20*20, size=200),], aes(x=x,y=y,fill=z)) p + geom_tile() # Input that works with image image(t(volcano)[ncol(volcano):1,]) ggplot(melt(volcano), aes(x=X1, y=X2, fill=value)) + geom_tile() # inspired by the image-density plots of Ken Knoblauch cars <- ggplot(mtcars, aes(y=factor(cyl), x=mpg)) cars + geom_point() cars + stat_bin(aes(fill=..count..), geom="tile", binwidth=3, position="identity") cars + stat_bin(aes(fill=..density..), geom="tile", binwidth=3, position="identity") cars + stat_density(aes(fill=..density..), geom="tile", position="identity") cars + stat_density(aes(fill=..count..), geom="tile", position="identity") # Another example with with unequal tile sizes x.cell.boundary <- c(0, 4, 6, 8, 10, 14) example <- data.frame( x = rep(c(2, 5, 7, 9, 12), 2), y = factor(rep(c(1,2), each=5)), z = rep(1:5, each=2), w = rep(diff(x.cell.boundary), 2) ) qplot(x, y, fill=z, data=example, geom="tile") qplot(x, y, fill=z, data=example, geom="tile", width=w) qplot(x, y, fill=factor(z), data=example, geom="tile", width=w) # You can manually set the colour of the tiles using # scale_manual col <- c("darkblue", "blue", "green", "orange", "red") qplot(x, y, fill=col[z], data=example, geom="tile", width=w, group=1) + scale_fill_identity(labels=letters[1:5], breaks=col) ## End(Not run)