Section 5.4 Composition
Composition of the map is the process of bringing all its elements together in order that they portray a complete image of what you are representing. Composition includes considerations of size, proportions, generalisation, simplification, and similar topics. We do not address these here, as they rely so much on the specific purpose of the map being created. Is it for the web? Is it for print? Are detailed outlines of coasts and waterways important, or is a generalised representation of the underlying geography enough? These are questions the map-maker should answer early on, and then pick geometry data, and specify output sizes and resolutions accordingly. In this section instead, we will focus on the element of composition which is concerned with the inclusion of basic map elements — information required by the map readers to make sense of our data, specifically orientation and scale indicators.
Subsection 5.4.1 Orientation indicators
It used to be that no map was complete without the inclusion of an orientation indicator (known colloquially as the "North Arrow"). Readers who are geography fans may know that the issue of where North is maybe not so straightforward. True north (the direction to the North Pole) differs from magnetic north, and the latter actually moves around as the Earth’s geophysical conditions change. There are reference maps which include both; however, for most crime-mapping applications we can conclude that this is overkill. Most maps are oriented to true north, anyway, so we are not being very deviant with choosing this approach.
So how to include this in our mapping in R? Well, we can turn to the
ggspatial library, and employ the function annotation_north_arrow(). In this function we can specify some aesthetic properties of our arrow, such as the height and width. Here we do so using millimetres as units.
library(ggspatial)
map + annotation_north_arrow(height = unit(7, "mm"), # specify arrow height
width = unit(5, "mm")) # specify arrow width

You can also change the style with the
style = parameter, and then choose from styles such as north_arrow_fancy_orienteering() or north_arrow_minimal():
map <- map + annotation_north_arrow(height = unit(7, "mm"), # specify arrow height
width = unit(5, "mm"),
style = north_arrow_minimal()) # specify arrow style
map

Subsection 5.4.2 Scale indicators
Besides the North Arrow another, key feature of maps is the scale indicator, which helps to understand distances we are presenting in our maps. Generally, scale should always be indicated or implied, unless the audience is so familiar with the map area. You could use text to indicate scale. For example you could write: "One centimeter is equal to one kilometer", or you could write 1:10000. But a common, graphical representation is to use a scale bar. Also in the
ggspatial library, there is the function annotation_scale(), which helps us achieve this. To plot both the north arrow and the scale indicator, you want to think about where you place these. You can move them along the x axis using the pad_x parameter, and along the y axis with the pad_y parameter.
map <- map + annotation_scale(line_width = 0.5, # add scale and specify width
height = unit(1, "mm"), # specify height
pad_x = unit(6, "cm")) # adjust on x axis
map

You can move these elements about to achieve your desired composition.
