I need to discuss a scatter plot and would like to refer to particular regions of the plot. Is there any way to 'highlight' particular sections of the plot? Perhaps with boxes and labels as below?
set.seed(1410)
dsmall<-diamonds[sample(nrow(diamonds), 100), ]
df<-data.frame("x"=dsmall$carat, "y"=dsmall$price)
p <-ggplot(df, aes(x, y))
p <- p + geom_point(alpha=2/10, shape=21, fill="blue", colour="black", size=5)
For a single region, it's easiest to use annotate
, first with rect
, then text
:
p + annotate("rect", xmin=1.5, xmax=2.5, ymin=12500, ymax= 18000,
fill=NA, colour="red") +
annotate("text", x=1.75, y=17000, label="Region A", size=8)
For multiple regions, you can put the data into a data frame and use geom_text
and geom_rect
:
regions <- data.frame(
xmin=c(1.5, 1, 0),
xmax=c(2.5, 2, 1),
ymin=c(12500, 5000, 0),
ymax=c(17500, 12500, 5000),
x =c(2, 1.5, 0.5),
y =c(15000, 7500, 2500),
lab = paste("Region", LETTERS[1:3])
)
p +
geom_rect(data=regions, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
fill=NA, colour="red") +
geom_text(data=regions, aes(x=x, y=y, label=lab))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With