Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how do I use geom_rect with discrete axis values

Tags:

r

ggplot2

I would like to plot rectangles but I have an x axis that's discrete values. How do I set the xmin and xmax values to start at a point between the discrete values?

library(ggplot2)
df <- data.frame(x = c("a","b","c"), y = c(1,2,3))
ggplot(data = df) + geom_rect(data = NULL, aes(xmin = "b", xmax = "c", ymin = 1.5, ymax = 2.5))

This code plots a rectangle but I'd like to move it to the left a little. I kindof want to be able to set xmin = "b"-0.3 and xmax = "b"+0.3, if that makes sense.

like image 221
Mist Avatar asked Sep 18 '15 02:09

Mist


1 Answers

You can try:

ggplot(data = df) +
  geom_rect(data = df, aes(x = x, y=y), xmin = as.numeric(df$x[[2]]) - 0.3,
                                        xmax = as.numeric(df$x[[3]]) + 0.3,
                                        ymin = 0, ymax = 2)

This works, as if you call xmin and xmax etc outside of the aes call, you can use whatever you want. The factor levels are used in the plot to plot them out, so as.numeric will make sure you get the right one.

like image 54
jeremycg Avatar answered Nov 14 '22 15:11

jeremycg