qmplot | R Documentation |
qmplot()
is the ggmap equivalent to the ggplot2 function qplot and allows
for the quick plotting of maps with data/models/etc.
qmplot(
x,
y,
...,
data,
zoom,
source = "stadia",
maptype = "stamen_toner_lite",
extent = "device",
legend = "right",
padding = 0.02,
force = FALSE,
darken = c(0, "black"),
mapcolor = "color",
facets = NULL,
margins = FALSE,
geom = "auto",
stat = list(NULL),
position = list(NULL),
xlim = c(NA, NA),
ylim = c(NA, NA),
main = NULL,
f = 0.05,
xlab = "Longitude",
ylab = "Latitude"
)
x |
longitude values |
y |
latitude values |
... |
other aesthetics passed for each layer |
data |
data frame to use (optional). If not specified, will create one, extracting vectors from the current environment. |
zoom |
map zoom, see |
source |
map source, see |
maptype |
map type, see |
extent |
how much of the plot should the map take up? "normal", "panel", or "device" (default) |
legend |
"left", "right" (default), "bottom", "top", "bottomleft", "bottomright", "topleft", "topright", "none" (used with extent = "device") |
padding |
distance from legend to corner of the plot (used with extent = "device") |
force |
force new map (don't use archived version) |
darken |
vector of the form c(number, color), where number is in (0,1) and color is a character string indicating the color of the darken. 0 indicates no darkening, 1 indicates a black-out. |
mapcolor |
color ("color") or black-and-white ("bw") |
facets |
faceting formula to use. Picks |
margins |
whether or not margins will be displayed |
geom |
character vector specifying geom to use. defaults to "point" |
stat |
character vector specifying statistics to use |
position |
character vector giving position adjustment to use |
xlim |
limits for x axis |
ylim |
limits for y axis |
main |
character vector or expression for plot title |
f |
number specifying the fraction by which the range should be extended |
xlab |
character vector or expression for x axis label |
ylab |
character vector or expression for y axis label |
## Not run: # these are skipped to conserve R check time
qmplot(lon, lat, data = crime)
# only violent crimes
violent_crimes <- subset(crime,
offense != "auto theft" &
offense != "theft" &
offense != "burglary"
)
# rank violent crimes
violent_crimes$offense <- factor(
violent_crimes$offense,
levels = c("robbery", "aggravated assault", "rape", "murder")
)
# restrict to downtown
violent_crimes <- subset(violent_crimes,
-95.39681 <= lon & lon <= -95.34188 &
29.73631 <= lat & lat <= 29.78400
)
theme_set(theme_bw())
qmplot(lon, lat, data = violent_crimes, colour = offense,
size = I(3.5), alpha = I(.6), legend = "topleft")
qmplot(lon, lat, data = violent_crimes, geom = c("point","density2d"))
qmplot(lon, lat, data = violent_crimes) + facet_wrap(~ offense)
qmplot(lon, lat, data = violent_crimes, extent = "panel") + facet_wrap(~ offense)
qmplot(lon, lat, data = violent_crimes, extent = "panel", colour = offense, darken = .4) +
facet_wrap(~ month)
qmplot(long, lat, xend = long + delta_long,
color = I("red"), yend = lat + delta_lat, data = seals,
geom = "segment", zoom = 5)
qmplot(long, lat, xend = long + delta_long, maptype = "stamen_watercolor",
yend = lat + delta_lat, data = seals,
geom = "segment", zoom = 6)
qmplot(long, lat, xend = long + delta_long, maptype = "stamen_terrain",
yend = lat + delta_lat, data = seals,
geom = "segment", zoom = 6)
qmplot(lon, lat, data = wind, size = I(.5), alpha = I(.5)) +
ggtitle("NOAA Wind Report Sites")
# thin down data set...
s <- seq(1, 227, 8)
thinwind <- subset(wind,
lon %in% unique(wind$lon)[s] &
lat %in% unique(wind$lat)[s]
)
# for some reason adding arrows to the following plot bugs
theme_set(theme_bw(18))
qmplot(lon, lat, data = thinwind, geom = "tile", fill = spd, alpha = spd,
legend = "bottomleft") +
geom_leg(aes(xend = lon + delta_lon, yend = lat + delta_lat)) +
scale_fill_gradient2("Wind Speed\nand\nDirection",
low = "green", mid = scales::muted("green"), high = "red") +
scale_alpha("Wind Speed\nand\nDirection", range = c(.1, .75)) +
guides(fill = guide_legend(), alpha = guide_legend())
## kriging
############################################################
# the below examples show kriging based on undeclared packages
# to better comply with CRAN's standards, we remove it from
# executing, but leave the code as a kind of case-study
# they also require the rgdal library
library(lattice)
library(sp)
library(rgdal)
# load in and format the meuse dataset (see bivand, pebesma, and gomez-rubio)
data(meuse)
coordinates(meuse) <- c("x", "y")
proj4string(meuse) <- CRS("+init=epsg:28992")
meuse <- spTransform(meuse, CRS("+proj=longlat +datum=WGS84"))
# plot
plot(meuse)
m <- data.frame(slot(meuse, "coords"), slot(meuse, "data"))
names(m)[1:2] <- c("lon", "lat")
qmplot(lon, lat, data = m)
qmplot(lon, lat, data = m, zoom = 14)
qmplot(lon, lat, data = m, size = zinc,
zoom = 14, source = "google", maptype = "satellite",
alpha = I(.75), color = I("green"),
legend = "topleft", darken = .2
) + scale_size("Zinc (ppm)")
# load in the meuse.grid dataset (looking toward kriging)
library(gstat)
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
proj4string(meuse.grid) <- CRS("+init=epsg:28992")
meuse.grid <- spTransform(meuse.grid, CRS("+proj=longlat +datum=WGS84"))
# plot it
plot(meuse.grid)
mg <- data.frame(slot(meuse.grid, "coords"), slot(meuse.grid, "data"))
names(mg)[1:2] <- c("lon", "lat")
qmplot(lon, lat, data = mg, shape = I(15), zoom = 14, legend = "topleft") +
geom_point(aes(size = zinc), data = m, color = "green") +
scale_size("Zinc (ppm)")
# interpolate at unobserved locations (i.e. at meuse.grid points)
# pre-define scale for consistency
scale <- scale_color_gradient("Predicted\nZinc (ppm)",
low = "green", high = "red", lim = c(100, 1850)
)
# inverse distance weighting
idw <- idw(log(zinc) ~ 1, meuse, meuse.grid, idp = 2.5)
mg$idw <- exp(slot(idw, "data")$var1.pred)
qmplot(lon, lat, data = mg, shape = I(15), color = idw,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) + scale
# linear regression
lin <- krige(log(zinc) ~ 1, meuse, meuse.grid, degree = 1)
mg$lin <- exp(slot(lin, "data")$var1.pred)
qmplot(lon, lat, data = mg, shape = I(15), color = lin,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) + scale
# trend surface analysis
tsa <- krige(log(zinc) ~ 1, meuse, meuse.grid, degree = 2)
mg$tsa <- exp(slot(tsa, "data")$var1.pred)
qmplot(lon, lat, data = mg, shape = I(15), color = tsa,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) + scale
# ordinary kriging
vgram <- variogram(log(zinc) ~ 1, meuse) # plot(vgram)
vgramFit <- fit.variogram(vgram, vgm(1, "Exp", .2, .1))
ordKrige <- krige(log(zinc) ~ 1, meuse, meuse.grid, vgramFit)
mg$ordKrige <- exp(slot(ordKrige, "data")$var1.pred)
qmplot(lon, lat, data = mg, shape = I(15), color = ordKrige,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) + scale
# universal kriging
vgram <- variogram(log(zinc) ~ 1, meuse) # plot(vgram)
vgramFit <- fit.variogram(vgram, vgm(1, "Exp", .2, .1))
univKrige <- krige(log(zinc) ~ sqrt(dist), meuse, meuse.grid, vgramFit)
mg$univKrige <- exp(slot(univKrige, "data")$var1.pred)
qmplot(lon, lat, data = mg, shape = I(15), color = univKrige,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) + scale
# adding observed data layer
qmplot(lon, lat, data = mg, shape = I(15), color = univKrige,
zoom = 14, legend = "topleft", alpha = I(.75), darken = .4
) +
geom_point(
aes(x = lon, y = lat, size = zinc),
data = m, shape = 1, color = "black"
) +
scale +
scale_size("Observed\nLog Zinc")
## End(Not run) # end dontrun
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.