Description Usage Arguments Examples
qmplot
is the ggmap equivalent to the ggplot2 function
qplot and allows for the quick plotting of maps with
data/models/etc.
1 2 3 4 5 6 | qmplot(x, y, ..., data, zoom, source = "stamen", maptype = "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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | ## 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 = "watercolor",
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(idw, "lin")$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.