We can change the color of the points using the col
argument in the
geom_point
function. To facilitate demonstration of new features, we
will redefine p
to be everything except the points layer:
p <- murders %>% ggplot(aes(population/10^6, total, label = abb)) +
geom_text(nudge_x = 0.05) +
scale_x_log10() +
scale_y_log10() +
xlab("Populations in millions (log scale)") +
ylab("Total number of murders (log scale)") +
ggtitle("US Gun Murders in 2010")
and then test out what happens by adding different calls to
geom_point
. We can make all the points blue by adding the color
argument:
p + geom_point(size = 3, color ="blue")
This, of course, is not what we want. We want to assign color depending on the geographical region. A nice default behavior of ggplot2 is that if we assign a categorical variable to color, it automatically assigns a different color to each category and also adds a legend.
Since the choice of color is determined by a feature of each
observation, this is an aesthetic mapping. To map each point to a color,
we need to use aes
. We use the following code:
p + geom_point(aes(col=region), size = 3)
The x
and y
mappings are inherited from those already defined in
p
, so we do not redefine them. We also move aes
to the first
argument since that is where mappings are expected in this function
call.
Here we see yet another useful default behavior: ggplot2
automatically adds a legend that maps color to region. To avoid adding
this legend we set the geom_point
argument show.legend = FALSE
.