Making maps
Making maps in R
One way of visually representing data is to plot them on a geographical
map.
This gives you a first impression of skewed distributions.
The following tutorial is based on the one created by Michael Dunn,
available at
[Link]
groups/evolutionary-processes/tools/mapping-with-r
Making maps in R
Making maps in R
Step 1: Install the non-standard libraries
On the MacOSX version you open the R application, select Package Installer from the
Packages & Data menu and choose Get List. When the list appears, scroll down to
and select maps and mapdata, tick the Install Dependencies checkbox (to be on the
safe side), and click Install Selected.
Making maps in R
In the Windows version...
Making maps in R
Test the installation
If R does not complain (seriously), you have installed the packages
Making maps in R
Step 2: Drawing maps: basics
map()
Making maps in R
Step 2: Drawing maps: basics
map()
[Link]()
Making maps in R
Step 2: Drawing maps: basics
map()
[Link]()
[Link]()
Making maps in R
Step 2: Drawing maps: basics
[Link](x=-175, y=-40, relwidth = 0.1, cex=0.4)
Making maps in R
Step 2: Drawing maps: basics
[Link](x=-175, y=-40, relwidth = 0.1, cex=0.4)
Determines position Determines width Determines font
of scale of the scale size of scale
Making maps in R
Step 2: Drawing maps: basics
Making maps in R
Step 3: Zooming in
map(xlim=c(-85, -35), ylim=c(-55,12))
Making maps in R
Step 4: Colors, captions
Colors:
map(xlim=c(-85, -35), ylim=c(-55,12), fill=TRUE, col="white", bg="darkseagreen")
Determines
background color
Determines the
foreground
(countries) color
Makes sure that the
col argument
applies to the
countries and not
just the borders
Making maps in R
Step 4: Colors, captions
Captions:
map(xlim=c(-85, -35), ylim=c(-55,12), fill=TRUE, col="white", bg="darkseagreen")
title(main="South America")
Making maps in R
Step 4: Colors, captions
If you want to change the color of the caption, e.g. because you want to have a black
background, you can do this by adding another argument to the title() function:
[Link]=
Try the following:
1. set background color to black
2. set caption color to white
Making maps in R
Step 4: Colors, captions
Caption color: [Link]=
map(xlim=c(-85, -35), ylim=c(-55,12), fill=TRUE, col="white", bg="black")
title(main="South America by night", [Link]="white")
Making maps in R
Step 5: Plotting data points onto a map
1. Read the dataset languagesSA into R, assign it to a variable
Making maps in R
Step 5: Plotting data points onto a map
1. Read the dataset languagesSA into R, assign it to a variable
2. Plot the languages onto the map using the function points() with the arguments
latitude and longitude of your object (remember: $)
Making maps in R
Step 5: Plotting data points onto a map
Making maps in R
Step 5: Plotting data points onto a map
And now of course we can manipulate the points by giving
them another color (col=), another form (pch=), and - if
possible - another fill.
Making maps in R
Step 5: Plotting data points onto a map
And now of course we can manipulate the points by giving
them another color (col=), another form (pch=), and - if
possible - another fill.
Making maps in R
Step 5: Plotting data points onto a map
Making maps in R
Step 5: Plotting data points onto a map
Thats all very fine, but we would like the colors to be
meaningful.
Display the content sof your object with str()
Making maps in R
Step 5: Plotting data points onto a map
Now suppose we wanted to display which languages had case marking and
which of the languages dont.
Making maps in R
Step 5: Plotting data points onto a map
map(xlim=c(-85, -35), ylim=c(-55,12), fill=TRUE, col="white", bg="darkseagreen")
title(main="South America")
1. Add a new column to the data frame filled with the value "gray"
mySAdata$[Link] = "gray"
2. change the values of the $[Link] column to "red" where the value for the $CASE column is "Y"
mySAdata$[Link][mySAdata$CASE == "Y"] = "red"
3. change the values of the $[Link] column to "blue" where the value for the $CASE column is "N"
mySAdata$[Link][mySAdata$CASE == "N"] = "blue"
4. use the $[Link] column of data as the values of the col attribute
points(mySAdata$LONGITUDE, mySAdata$LATITUDE, pch=20, col=mySAdata$[Link])
Making maps in R
Step 5: Plotting data points onto a map
Now maybe we want to make the
dots a little bigger
Making maps in R
Step 5: Plotting data points onto a map
What about language names?
You can use the function text()
Type help(text)
Making maps in R
For x and y, we can use ....
For the labels we can use ...
Making maps in R
Step 5: Plotting data points onto a map
What about language names?
You can use the function text()
Type help(text)
Making maps in R
Step 5: Plotting data points onto a map
With these larger maps with data points
relatively close to each other, the labels do
not work very well. We can try to fix it by
using the iso codes instead
Making maps in R
Step 5: Plotting data points onto a map
We may also choose to place the labels
directly onto the data points by losing the
pos= and adj= arguments
Making maps in R
Step 5: Plotting data points onto a map
We may also choose to place the labels
directly onto the data points by losing the
pos= and adj= arguments
...and change the font color to something
else with the argument col= within the text
function
Making maps in R
Step 6: Adding a legend
legend( Function legend() creates a legend
"bottomright", Determine the position of the legend
legend=c("Case", "No case"), Add names to the categories
pch=20, Determine form of symbol in legend
col=c("red", "blue"), Determine color of legend symbols
title="Presence of case", Add title to a legend
[Link]="darkorange", bg="white") Determine some further graphical
parameters such as text color and
background color
Making maps in R
Ta-taaaa!
Making maps in R
Some things to play around with
Try and do the same for word order
Try and project plots for combinations of features with the
logical operator &
Once you have a dataset with latitude and longitude, you
can determine the range of the map you need by using the
functions range() or extendrange() which only display the
part of the map between the points in the dataset that are
furthest apart (range) plus a small margin (extendrange).
See (also for much more on coloring):
[Link]
groups/evolutionary-processes/tools/mapping-with-r