library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(size=4)
Suppose you have the above scatterplot. How can you speci
Sure it can, although this type of work if probably best suited to working with your data frame before ggplot(). You could use ifelse() like this:
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(size = 4,
aes(color = ifelse(mpg > 25, "> 25",
ifelse(mpg > 20, "20-25", "< 20")))) +
scale_color_manual(values = c("> 25" = "red", "< 20" = "blue", "20-25" = "green"),
name = "MPG" )

You don't need to call guides() to create a title you can pass it to the name = .. argument in scale_color_manual()
You do this in two steps:
First, you define the groups that should have different colours; either by adding another column to the data frame or inside aes. I’ll use aes here:
aes(wt, mpg, color = cut(mpg, breaks = c(0, 20, 25, Inf)))
Secondly, by specifying a manual colour or fill scale:
scale_color_manual(values = c('blue', 'green', 'red'),
limits = c('(0,20]', '(20,25]', '(25,Inf]'))
This specifies which colours to use (values) and which labels to assign them to (limits); these are the names of the grouping generated by cut.
Taken together:
ggplot(mtcars) +
aes(wt, mpg, color = cut(mpg, breaks = c(0, 20, 25, Inf))) +
geom_point(size = 4) +
scale_color_manual(values = c('blue', 'green', 'red'),
limits = c('(0,20]', '(20,25]', '(25,Inf]'))
You can improve the legend title by adding the grouping as a separate column to your data, or by providing a guides function call:
guides(color = guide_legend(title = 'mpg range'))