Learn R Programming

ggplot2 (version 0.9.1)

geom_raster: High-performance rectangular tiling.

Description

This is a special case of geom_tile where all tiles are the same size. It is implemented highly efficiently using the internal rasterGrob function.

Usage

geom_raster(mapping = NULL, data = NULL,
    stat = "identity", position = "identity", hjust = 0.5,
    vjust = 0.5, interpolate = FALSE, ...)

Arguments

hjust,vjust
horizontal and vertical justification of the grob. Each justification value should be a number between 0 and 1. Defaults to 0.5 for both, centering each pixel over its data location.
interpolate
If TRUE interpolate linearly, if FALSE (the default) don't interpolate.
mapping
The aesthetic mapping, usually constructed with aes or aes_string. Only needs to be set at the layer level if you are overriding the plot defaults.
data
A layer specific dataset - only needed if you want to override the plot defaults.
stat
The statistical transformation to use on the data for this layer.
position
The position adjustment to use for overlappling points on this layer
...
other arguments passed on to layer. This can include aesthetics whose values you want to set, not map. See layer for more details.

Details

By default, geom_raster add a vertical and horizontal padding. The size of padding depends on the resolution of data. If you want to manually set the padding (e.g. want zero-padding), you can change the behavior by setting hpad and vpad.

Examples

Run this code
# 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
}
qplot(x, y, data = pp(20), fill = z, geom = "raster")
# Interpolation worsens the apperance of this plot, but can help when
# rendering images.
qplot(x, y, data = pp(20), fill = z, geom = "raster", interpolate = TRUE)

# For the special cases where it is applicable, geom_raster is much
# faster than geom_tile:
pp200 <- pp(200)
base <- ggplot(pp200, aes(x, y, fill = z))
benchplot(base + geom_raster())
benchplot(base + geom_tile())

# justification
df <- expand.grid(x = 0:5, y = 0:5)
df$z <- runif(nrow(df))
# default is compatible with geom_tile()
ggplot(df, aes(x, y, fill = z)) + geom_raster()
# zero padding
ggplot(df, aes(x, y, fill = z)) + geom_raster(hjust = 0, vjust = 0)

Run the code above in your browser using DataLab