Search code examples
rggplot2geomgeom-point

where can I find the complete list of shapes and colors as character inputs for geom_point?


p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(shape = "square", color = "blue")

I have a function that will accept the shape and color parameters, which will be passed to geom_point. I need to check if the input is valid. So I need to do something like:

stopifnot(shape %in% all_valid_shapes) ditto for color

So where can I get those lists?


Solution

  • See this existing question for validating color.

    For the shapes, you could use the un-exported ggplot function that validates the shape names

    ggplot2:::translate_shape_string(4)       # ok
    ggplot2:::translate_shape_string("cross") # ok
    ggplot2:::translate_shape_string("oops")  # bad
    ggplot2:::translate_shape_string(30)      # bad
    

    You can see if it throws an error or not. But because this is an unexported function, it is not guaranteed to work or be maintained in future versions of ggplot2 so use at your own risk.

    Or there is code in the ggplot specs vignette vignette("ggplot2-specs", package="ggplot2") that seems to give a list of all the possible values. you could check potential string values against that list.

    shape_names <- c(
      "circle", paste("circle", c("open", "filled", "cross", "plus", "small")), "bullet",
      "square", paste("square", c("open", "filled", "cross", "plus", "triangle")),
      "diamond", paste("diamond", c("open", "filled", "plus")),
      "triangle", paste("triangle", c("open", "filled", "square")),
      paste("triangle down", c("open", "filled")),
      "plus", "cross", "asterisk"
    )