在 R 中绘制和分面地图
Plot and facet a map in R
主数据框
data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042),
lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699),
views = c(13565, 27020, 74420, 18550, 73253, 14615),
challenge = c("SPOT CIDADE", "SPOT NATUREZA I",
"SPOT NATUREZA II", "SPOT ROMANCE",
"SPOT PATRIMONIO", "SPOT GASTRONOMIA"),
stringsAsFactors = FALSE)
我正在尝试绘制地图以供打印,结果将是每个挑战的地图,并且点会根据每个视频的观看次数改变大小。
到目前为止,我的代码将所有点都放在同一张地图上 - 我在分面和更改点大小方面遇到了问题。
当我改变美学中的变量时,分数会变得很大。
缩放级别太近或太远。
我使用的代码如下。
我看到的每个例子要么离我需要的太远,要么根本就不需要
工作。
我做得对吗,还是需要另一种方法?
谢谢!
library(ggplot2)
library(ggmap)
lon <- as.numeric(new$lon)
lat <- as.numeric(new$lat)
spots_df <- as.data.frame(cbind(lon, lat))
mapa_spots <- get_map(location = c(lon = mean(spots_df$lon), lat = mean(spots_df$lat)), zoom = 6, maptype = "terrain", scale = 2)
plot_spots <- ggmap(mapa_spots) +
geom_point(data = spots_df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 2, shape = 21) +
guides(fill=FALSE, alpha=FALSE, size=FALSE)
plot_spots
我从这段代码得到的结果:
假设您的数据框名为 dt
,这里是 ggmap and ggplot2 的图。关键是将 base_layer
参数与 ggplot(dt, aes(...))
一起使用,这样您就可以像调用 ggplot
一样进一步添加其他 geom
。您在评论中提到您希望每个挑战都在单独的地图中。我认为 facet_wrap
可能是您要找的。
library(ggplot2)
library(ggmap)
mapa_spots <- get_map(location = c(lon = mean(dt$lon),
lat = mean(dt$lat)),
zoom = 6, maptype = "terrain", scale = 2)
ggmap(mapa_spots, base_layer = ggplot(dt, aes(x = lon, y = lat, size = views))) +
geom_point() +
facet_wrap(~challenge, ncol = 3)
数据
dt <- data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042),
lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699),
views = c(13565, 27020, 74420, 18550, 73253, 14615),
challenge = c("SPOT CIDADE", "SPOT NATUREZA I",
"SPOT NATUREZA II", "SPOT ROMANCE",
"SPOT PATRIMONIO", "SPOT GASTRONOMIA"),
stringsAsFactors = FALSE)
主数据框
data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042),
lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699),
views = c(13565, 27020, 74420, 18550, 73253, 14615),
challenge = c("SPOT CIDADE", "SPOT NATUREZA I",
"SPOT NATUREZA II", "SPOT ROMANCE",
"SPOT PATRIMONIO", "SPOT GASTRONOMIA"),
stringsAsFactors = FALSE)
我正在尝试绘制地图以供打印,结果将是每个挑战的地图,并且点会根据每个视频的观看次数改变大小。
到目前为止,我的代码将所有点都放在同一张地图上 - 我在分面和更改点大小方面遇到了问题。
当我改变美学中的变量时,分数会变得很大。
缩放级别太近或太远。
我使用的代码如下。 我看到的每个例子要么离我需要的太远,要么根本就不需要 工作。
我做得对吗,还是需要另一种方法?
谢谢!
library(ggplot2)
library(ggmap)
lon <- as.numeric(new$lon)
lat <- as.numeric(new$lat)
spots_df <- as.data.frame(cbind(lon, lat))
mapa_spots <- get_map(location = c(lon = mean(spots_df$lon), lat = mean(spots_df$lat)), zoom = 6, maptype = "terrain", scale = 2)
plot_spots <- ggmap(mapa_spots) +
geom_point(data = spots_df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 2, shape = 21) +
guides(fill=FALSE, alpha=FALSE, size=FALSE)
plot_spots
我从这段代码得到的结果:
假设您的数据框名为 dt
,这里是 ggmap and ggplot2 的图。关键是将 base_layer
参数与 ggplot(dt, aes(...))
一起使用,这样您就可以像调用 ggplot
一样进一步添加其他 geom
。您在评论中提到您希望每个挑战都在单独的地图中。我认为 facet_wrap
可能是您要找的。
library(ggplot2)
library(ggmap)
mapa_spots <- get_map(location = c(lon = mean(dt$lon),
lat = mean(dt$lat)),
zoom = 6, maptype = "terrain", scale = 2)
ggmap(mapa_spots, base_layer = ggplot(dt, aes(x = lon, y = lat, size = views))) +
geom_point() +
facet_wrap(~challenge, ncol = 3)
数据
dt <- data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042),
lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699),
views = c(13565, 27020, 74420, 18550, 73253, 14615),
challenge = c("SPOT CIDADE", "SPOT NATUREZA I",
"SPOT NATUREZA II", "SPOT ROMANCE",
"SPOT PATRIMONIO", "SPOT GASTRONOMIA"),
stringsAsFactors = FALSE)