The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
{maps}
packageThis document explains plotting geospatial data using ggplot2
and {ggfortify}
.
{maps}
package{ggplot2}
can load map data provided by {maps}
and {mapdata}
package via map_data
function. Loaded data is automatically converted to data.frame
, thus you can plot maps via ggplot
as below.
library(mapdata)
library(ggplot2)
jp <- ggplot2::map_data('world2', 'japan')
class(jp)
## [1] "data.frame"
head(jp)
## long lat group order region subregion
## 1 123.8887 24.28013 1 1 Japan Iriomote Jima
## 2 123.8256 24.26606 1 2 Japan Iriomote Jima
## 3 123.7498 24.28330 1 3 Japan Iriomote Jima
## 4 123.6807 24.28804 1 4 Japan Iriomote Jima
## 5 123.6798 24.31777 1 5 Japan Iriomote Jima
## 6 123.7523 24.34849 1 6 Japan Iriomote Jima
ggplot(jp, aes(x = long, y = lat, group = group)) +
geom_polygon()
{ggfortify}
additionally allows to autoplot
map
instances as it is. You can specify geom
and other options to controll the outlooks.
library(ggfortify)
jp <- map('world2', 'japan', plot = FALSE, fill = TRUE)
class(jp)
## [1] "map"
autoplot(jp)
p <- autoplot(jp, geom = 'polygon', fill = 'subregion') +
theme(legend.position="none")
p
Also, maps
package provides some geospatial data. Following example retrieves Japanese city locations from world’s city locations. Then plot on the previous map.
cities <- get('world.cities')
cities <- cities[cities$country.etc == 'Japan', ]
head(cities)
## name country.etc pop lat long capital
## 189 Abashiri Japan 42324 44.02 144.27 0
## 221 Abiko Japan 132577 35.88 140.03 0
## 481 Ageo Japan 220766 35.95 139.61 0
## 514 Ago Japan 23876 34.33 136.82 0
## 571 Agui Japan 24227 34.95 136.91 0
## 629 Aikawa Japan 43599 35.55 139.29 0
p + geom_point(data = cities, aes(x = long, y = lat),
colour = 'blue', size = 0.1)
Because map plot created by {ggfortify}
has a setting of aes(x = long, y = lat)
, you don’t have to specify x
and y
aethetics in this case.
p + geom_point(data = cities, colour = 'blue', size = 0.1)
{sp}
packageAlso, {ggfortify}
can supports geospatial instances defined in {sp}
package. Actually some functions are defined in {ggplot2}
. Following table shows where each function is defined.
class | fortify |
autoplot |
---|---|---|
Line |
{ggplot2} |
{ggfortify} |
Lines |
{ggplot2} |
{ggfortify} |
Polygon |
{ggplot2} |
{ggfortify} |
Polygons |
{ggplot2} |
{ggfortify} |
SpatialLines |
{ggfortify} |
{ggfortify} |
SpatialLinesDataFrame |
{ggplot2} |
{ggfortify} |
SpatialPoints |
{ggfortify} |
{ggfortify} |
SpatialPointsDataFrame |
{ggfortify} |
{ggfortify} |
SpatialPolygons |
{ggplot2} |
{ggfortify} |
SpatialPolygonsDataFrame |
{ggplot2} |
{ggfortify} |
Following example creates SpatialPointsDataFrame
of some Japanese city’s populatios, then plot it via autoplot
. Note that you geom
is specified by the original {sp}
class. SpatialPoints
is plot using geom_point
for example.
library(sp)
df <- data.frame(long = c(139.691704, 135.519711),
lat = c(35.689521, 34.686316),
label = c('Tokyo', 'Osaka'),
population = c(1335, 886))
coordinates(df) <- ~ long + lat
class(df)
## [1] "SpatialPointsDataFrame"
## attr(,"package")
## [1] "sp"
autoplot(df, p = p, colour = 'red', size = 10)
Also, you can use other columns as aethetics.
autoplot(df, p = p, colour = 'red', size = 'population') +
scale_size_area()
autoplot
has p
keyword to take existing ggplot
instance. Below example plots SpatialPointsDataFrame
on the ggmap
.
library(ggmap)
bbox <- c(130.0, 30.0, 145.0, 45.0)
map <- get_openstreetmap(bbox = bbox, scale = 47500000)
p <- ggmap(map)
autoplot(df, p = p, colour = 'red', size = 'population') +
scale_size_area() +
theme(legend.justification = c(1, 0), legend.position = c(1, 0))
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.