geom_rect and geom_tile do the same thing, but are
parameterised differently. geom_rect uses the locations of the four
corners (xmin, xmax, ymin and ymax).
geom_tile uses the center of the tile and its size (x,
y, width, height). geom_raster is a high
performance special case for when all the tiles are the same size.geom_raster(mapping = NULL, data = NULL, stat = "identity",
  position = "identity", hjust = 0.5, vjust = 0.5, interpolate = FALSE,
  na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...)geom_rect(mapping = NULL, data = NULL, stat = "identity",
  position = "identity", na.rm = FALSE, show.legend = NA,
  inherit.aes = TRUE, ...)
geom_tile(mapping = NULL, data = NULL, stat = "identity",
  position = "identity", na.rm = FALSE, show.legend = NA,
  inherit.aes = TRUE, ...)
TRUE interpolate linearly, if FALSE
(the default) don't interpolate.FALSE (the default), removes missing values with
a warning.  If TRUE silently removes missing values.NA, the default, includes if any aesthetics are mapped.
FALSE never includes, and TRUE always includes.FALSE, overrides the default aesthetics,
rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. layer. There are
  three types of arguments you can use here:
color = "red"orsize = 3.# Interpolation smooths the surface & is most helpful when rendering images. ggplot(faithfuld, aes(waiting, eruptions)) + geom_raster(aes(fill = density), interpolate = TRUE)
# If you want to draw arbitrary rectangles, use geom_tile() or geom_rect() df <- data.frame( x = rep(c(2, 5, 7, 9, 12), 2), y = rep(c(1, 2), each = 5), z = factor(rep(1:5, each = 2)), w = rep(diff(c(0, 4, 6, 8, 10, 14)), 2) ) ggplot(df, aes(x, y)) + geom_tile(aes(fill = z)) ggplot(df, aes(x, y)) + geom_tile(aes(fill = z, width = w), colour = "grey50") ggplot(df, aes(xmin = x - w / 2, xmax = x + w / 2, ymin = y, ymax = y + 1)) + geom_rect(aes(fill = z, width = w), colour = "grey50")
# Justification controls where the cells are anchored 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)
# Inspired by the image-density plots of Ken Knoblauch cars <- ggplot(mtcars, aes(mpg, factor(cyl))) cars + geom_point() cars + stat_bin2d(aes(fill = ..count..), binwidth = c(3,1)) cars + stat_bin2d(aes(fill = ..density..), binwidth = c(3,1))
cars + stat_density(aes(fill = ..density..), geom = "raster", position = "identity") cars + stat_density(aes(fill = ..count..), geom = "raster", position = "identity")