View source: R/geom_oblicuboids.R
| geom_oblicuboids | R Documentation | 
geom_oblicuboids() creates a ggplot2 geom that draws cuboids
geom_oblicuboids( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., angle = 45, scale = 0.5, xoffset = 0, yoffset = 0, zoffset = 0, light = darken_face, show.legend = NA, inherit.aes = TRUE )
| mapping | Set of aesthetic mappings created by  | 
| data | The data to be displayed in this layer. There are three options: If  A  A  | 
| stat | The statistical transformation to use on the data for this layer, as a string. | 
| position | Position adjustment, either as a string, or the result of a call to a position adjustment function. | 
| ... | Aesthetics, used to set an aesthetic to a fixed value. | 
| angle | Oblique projection angle. | 
| scale | Oblique projection foreshortening factor. 0.5 corresponds to the “cabinet projection”. 1.0 corresponds to the “cavalier projection”. 0.0 corresponds to a “primary view orthographic projection”. | 
| xoffset, yoffset, zoffset | By default the x,y values are assumed to be the center of the cuboid
and the z value is assumed to be the top of the cuboid.
Use  | 
| light | If  | 
| show.legend | logical. Should this layer be included in the legends?
 | 
| inherit.aes | If  | 
geom_oblicuboids() requires a fixed scale coordinate system with an aspect
ratio of 1 as provided by ggplot2::coord_fixed().
A ggplot2 geom.
geom_oblicuboids() understands the following aesthetics (required aesthetics are in bold).
See oblicuboidsGrob() for more details.
x
y
z
fill
colour
linetype
linewidth
geom_oblicuboids() is a wrapper around oblicuboidsGrob().
if (require("ggplot2")) {
  data("volcano", package = "datasets")
  df <- xyz_heightmap(volcano, scale = 0.3, min = 1)
  g <- ggplot(df, aes(x, y, z = z, fill = raw)) +
         geom_oblicuboids(light = FALSE) +
         coord_fixed() +
         scale_fill_gradientn(name = "Height (m)",
                              colours=terrain.colors(256)) +
         labs(x = "East (10m)", y = "North (10m)",
              title = "Maungawhau (`datasets::volcano`)")
  plot(g)
}
if (require("ggplot2")) {
  # Using `scale_fill_identity()` if using `xyz_heightmap()`'s `fill` column
  df <- xyz_heightmap(volcano, scale = 0.3, min = 1,
                      col = grDevices::heat.colors)
  g <- ggplot(df, aes(x, y, z = z, fill = fill)) +
         geom_oblicuboids() +
         coord_fixed() +
         scale_fill_identity()
  plot(g)
}
if (require("ggplot2") && require("dplyr")) {
  # Note you probably should not do 3D bar charts...
  df <- as.data.frame(datasets::Titanic) |>
          filter(Age == "Child", Freq > 0) |>
          group_by(Sex, Survived, Class) |>
          summarize(Freq = seq.int(sum(Freq)), .groups = "drop")
  g <- ggplot(df, aes(x = Survived, y = Freq, fill = Survived)) +
      facet_grid(cols = vars(Class, Sex)) +
      coord_fixed() +
      geom_oblicuboids(yoffset = -0.5, scale = 0.7, angle = -45) +
      scale_fill_manual(values = c("Yes" = "lightblue", "No" = "red")) +
      scale_y_continuous(expand = expansion(), name = "") +
      scale_x_discrete(name = "", breaks = NULL) +
      labs(title = "Children on the Titanic (by ticket class)")
  plot(g)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.