我最近遇到了ggmap函数的问题 - 从来没有过.
我有这个data.frame:
> head(df)
longitude latitude freq
1 -118.7093 34.13446 2
2 -118.7092 34.13437 1
3 -118.6851 34.28574 5
4 -118.5986 34.26155 1
5 -118.5917 34.22762 6
6 -118.5914 34.37675 1
Run Code Online (Sandbox Code Playgroud)
我曾经能够使用get_map获取地图,然后使用ggmap绘制栅格对象的绘图.然后我会使用+ geom_point或其中任何一个来绘制我的数据,就像一个魅力.
map <- get_map(location=c(lon=-117.962813,lat=33.969399), zoom=10, maptype="hybrid")
finalmap <- ggmap(map, base_layer = ggplot(aes(x=longitude, y=latitude), data = df))
Run Code Online (Sandbox Code Playgroud)
但是现在ggmap返回:
Error in annotate("rect", xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, :
unused arguments (xmin = xmin, xmax = xmax, ymin = ymin, ymax = …Run Code Online (Sandbox Code Playgroud) 我正在绘制一张地图,该地图应该包含来自数据集的多个(> 400)箭头的叠加,该箭头具有每个箭头的开始和结束的纬度/经度对.以下是使用dput的数据子集:
df <- structure(list(Lat = c(49.34054, 49.34068, 49.3409, 49.34106,
49.34116, 49.34133, 49.34138, 49.34144, 49.34155, 49.34164, 49.34168,
49.34178, 49.34179, 49.34187, 49.34199, 49.34202, 49.3421, 49.34219,
49.34226, 49.34236, 49.3424), Lon = c(-117.76365, -117.76433,
-117.76474, -117.76575, -117.76646, -117.76607, -117.76643, -117.76676,
-117.76611, -117.76638, -117.76678, -117.76612, -117.7671, -117.76678,
-117.76776, -117.76745, -117.76706, -117.76815, -117.76778, -117.76762,
-117.76812), LatEnd = c(49.3404216917208, 49.3404813977525, 49.3407696999527,
49.3409218055133, 49.3408834255181, 49.3411571438575, 49.3411444104952,
49.3412068979592, 49.3413453850968, 49.3414853385912, 49.3414067819334,
49.3415646398153, 49.3415782191525, 49.3416671210859, 49.341769715577,
49.3418702688525, 49.3418749917805, 49.3419107724121, 49.3418905356976,
49.3421097403974, 49.3419881060831), LonEnd = c(-117.76319214364,
-117.763951728004, -117.76423214535, -117.765201260725, -117.766005995062, …Run Code Online (Sandbox Code Playgroud) 我可以ggmap用这样的点绘制英国地图:
library(ggmap)
UK_map <- get_map(location = c(-2.65, 53.7), zoom = 5, maptype = "hybrid")
UK_map <- ggmap(ggmap=UK_map, extent = "device", legend = "right")
UK_map + geom_point(data = data.frame(x = -1.81, y = 55.655), aes(x, y), size = 5)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用Winston Chang的multiplot功能,那么这一点就会消失.
multiplot <- function(..., plotlist=NULL, cols) {
require(grid)
# Make a list from the ... arguments and plotlist
plots <- c(list(...), plotlist)
numPlots = length(plots)
# Make the panel
plotCols = cols # Number of …Run Code Online (Sandbox Code Playgroud) 我正努力在谷歌地图上叠加邻居边界.我正在尝试遵循此代码.我的版本如下.你看到什么明显错了吗?
#I set the working directory just before this...
chicago = readOGR(dsn=".", layer="CommAreas")
overlay <- spTransform(chicago,CRS("+proj=longlat +datum=WGS84"))
overlay <- fortify(overlay)
location <- unlist(geocode('4135 S Morgan St, Chicago, IL 60609'))+c(0,.02)
ggmap(get_map(location=location,zoom = 10, maptype = "terrain", source = "google",col="bw")) +
geom_polygon(aes(x=long, y=lat, group=group), data=overlay, alpha=0)+
geom_path(color="red")
Run Code Online (Sandbox Code Playgroud)
任何见解都会非常感激.感谢您的帮助和耐心.
我正在尝试生成一个覆盖美国底图的漂亮泡泡图(如果可以的话,我可以导入一个shapefile,但我一直在使用R底图。
library(ggplot2,sp,raster,maps,mapdata,maptools,ggmap,rgeos)
myData = data.frame(name=c("Florida","Colorado","california","Harvard","Yellowstone"),
lat=c(28.1,39,37,42,44.6),
long=c(-81.6,-105.5,-120,-71,-110),
pop=c(280,156,128,118,202))
Run Code Online (Sandbox Code Playgroud)
使用下面的这段代码,我改编自另一个堆栈溢出帖子(使用卫星地图在R中创建气泡图),可以将气泡图覆盖在美国地图上。但是,渲染速度非常慢,范围太紧,限制在一个盒子中,我无法根据自己的判断将其他图层添加到绘图中,并且底图较厚且视觉上不干净。
xy <- myData[,c("long", "lat")]
nl <- getData('GADM', country="USA", level=1) #raster data, format SpatialPolygonsDataFrame
nl <- gSimplify(nl, tol=0.01, topologyPreserve=TRUE)
# coercing the polygon outlines to a SpatialLines object
spl <- list("sp.lines", as(nl, "SpatialLines"))
SPDF <- SpatialPointsDataFrame(coords=xy, data=myData)
coordinates(myData) <- c("lat", "long")
projection(SPDF)<- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"
coordinates(SPDF)[1:5,] #retrieves spatial coordinates form the dataframe
bubble(SPDF, "pop", sp.layout=spl, main="This is It!")
Run Code Online (Sandbox Code Playgroud)
我可以使用此代码绘制一个漂亮的底图。我在地图上添加了点,但是这些点的大小没有按照数据中的弹出列来确定。而且我可以在此地图上添加其他图层。但是我可以像使用气泡图一样控制点的大小和符号本身吗?
map(database= "world", ylim=c(45,90),
xlim=c(-160,-50), col="grey80",
fill=TRUE, projection="gilbert",
orientation= c(90,0,225)) …Run Code Online (Sandbox Code Playgroud) 我和我一起有几个地方的纬度和逻辑信息.这是一个示例:
lat<-c(17.48693,17.49222,17.51965,17.49359,17.49284,17.47077)
long<-c(78.38945,78.39643,78.37835,78.40079,78.40686,78.35874)
Run Code Online (Sandbox Code Playgroud)
我想以某种顺序绘制这些位置(比如上面向量中的第一个元素的lat-long组合将是起点,我需要以相同的顺序行进到最后一个位置),并在R中进行谷歌地图指示.我发现有一个谷歌地图api,我可以从中获取指定位置的谷歌地图截图,在它上面我们需要绘制线条来连接它们.但我需要的是谷歌地图驾驶方向连接位置(而不是ggplot线).请帮忙.
我试图在德国地图上绘制一些点,使用ggmap包,效果很好.但是,我想做一些具体的改变,不知道如何或如果可能的话.
为了制作地图,我执行以下操作(d是具有经度和纬度的数据框):
map <- get_map(location = c(10.25828, 51.11484), zoom = 6, maptype = "terrain")
p <- ggmap(map)
p <- p + scale_x_continuous(limits = c(6.09500,14.95306)) + scale_y_continuous(limits = c(47.39889,55.01250)+c(0,-0.1))
p <- p + xlab("Longitude") + ylab("Latitude")
Run Code Online (Sandbox Code Playgroud)
在那张地图上,我然后绘制了一些点.现在,如果我如上所述设置zoom = 6,则地图非常详细,并且会打印许多城市名称以及道路的一些白线.这使得地图看起来有点"拥挤".这是地图的样子:
pdf的大小也很大,如果我想拥有多个地图,这不是很实用.
另一方面,如果我设置zoom = 5,则背景不太详细,显示的道路等较少,文件较小.但是,城市和国家/地区名称的打印字体太大.这是它的样子:
所以我的问题是:可以以某种方式获取带有详细信息的地图,如zoom = 5,但是国家和城市名称的字体大小与zoom = 6相同?
提前致谢
我正在尝试使用ggmap在地图上绘制点,但我不知道如何从地图的背景中删除国家/地区的名称
library(ggmap)
library(mapproj)
map <- get_map(location = 'middle east', zoom = 4)
read.table("latlon.txt", header = TRUE) -> tbl
plot<-ggmap(map) + geom_point(aes(x = lon, y = lat), color=tbl$color, size=3, data = tbl) + theme(legend.position = "none")+
#geom_text(aes(label=pop),data=tbl,hjust=0, vjust=0)
ggsave(plot=plot,height=7.5,width=11, filename="f4 map.pdf", useDingbats=FALSE)
plot(plot)
Run Code Online (Sandbox Code Playgroud)
我想在我的点上启用标签,但背景文本基本上会妨碍.有谁知道如何保留Google地形图但删除国家/地区名称?谢谢!
我正在尝试使用R库Ggmap对地图进行地理定位.
location_google_10000 <- geocode(first10000_string, output = "latlon",
source = "dsk", messaging = FALSE)
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用"dsk" - 数据科学工具包API-因此它没有速率限制为谷歌(限制为每天2500坐标).但是,当我尝试使用包含超过2500的向量运行时,它会弹出以下消息:
Error: google restricts requests to 2500 requests a day for non-business use.
Run Code Online (Sandbox Code Playgroud)
我尝试使用带有1000个地址的dsk运行代码,然后检查是否实际使用了google或dsk api:
> geocodeQueryCheck()
2500 geocoding queries remaining.
Run Code Online (Sandbox Code Playgroud)
所以出于某种原因,它不允许我使用超过2500与"dsk",但我相信它不使用谷歌.
我有关于热图的问题.我可以通过ggmap可视化热图,并将眼球放在最密集的位置,但我怎样才能得到这些斑点的精确长度和纬度.这是测试代码:
set.seed(1)
mymap <- get_map(location = "Detroit", zoom = 8)
mydata <- data.table(long = runif(min = -84, max = -82.5, n = 100),
lat = runif(min = 42, max = 42.7, n = 100))
g <- ggmap(mymap) +
stat_density2d(data = mydata,
aes(x = long, y = lat, fill = ..level..,alpha = ..level..),
size = 0.5, bins = 10, geom = "polygon") +
scale_alpha_continuous(range(0.1,0.5))
g
Run Code Online (Sandbox Code Playgroud)
ggmap ×10
r ×10
ggplot2 ×5
google-maps ×2
bubble-chart ×1
geocoding ×1
geolocation ×1
gis ×1
maps ×1
plot ×1
rgooglemaps ×1
shapefile ×1