我有一张美国地图,准备出发:
mygggmap <- get_map(location = "United States", zoom = 4)
g <- ggmap(myggmap)
下一步是绘制一些主要城市.
我知道我可以创建一个图层来绘制我的主要城市的经度和纬度,例如:
g <- g + geom_density2d(data = citydata, aes(x = lon, y = lat))
但我想知道是否有办法按实际名称,城市和州进行策划?由于ggmap是通过Google Map API分层的,这应该是可能的,对吗?
我想在地图上绘制事件(旧金山).由于我的事件太多(800k点),我最终会出现过度绘图问题.因此,为了避免这种情况,我想制作二维密度以获得所需的洞察力.问题在于,虽然事件遍布地图,但geom_density2d仅显示了城市的一小部分区域.当然,预期的结果是覆盖几乎所有城市的密度.任何想法为什么会发生这种情况?
码
a<-get_map("San Francisco",zoom=12,source='osm')
ggmap(a,extent='device')+ geom_density2d(data=train,aes(x=X,y=Y))+
stat_density2d(data=train,aes(x=X,y=Y,fill=..level..,alpha=..level..),
geom='polygon')
Run Code Online (Sandbox Code Playgroud)
起初,@ ajrwhite感谢你的回答和态度.你也是对的,在处理这个大数据集时,你需要进行子集才能进行实验.就bin的数量而言,我认为像geom_density一样,内部计算最佳内核binwidth/bin数.看起来,在二维情况下,你必须自己调整它.
现在,我提到的问题是,我从未想过城市中的罪行会如此集中.这个发现很清楚,我的输出似乎是假的.事实证明,这个城市就是这种情况.这个人对这个数据集的各种可视化还有一个更详细的方法.
https://www.kaggle.com/mircat/sf-crime/violent-crime-mapping
最后,谢谢你的重定向.这个主题确实有广泛的涵盖.
我有32K行地址,我必须找到长/纬度值.
我正在使用此处找到的代码.我非常感谢这个人创造它,但我有一个问题:
我想编辑它,以便如果循环遇到当前行地址的问题,它只是在Lat/Long字段中表示NA并移动到下一个.有谁知道如何实现这一目标?代码如下:
# Geocoding a csv column of "addresses" in R
#load ggmap
library(ggmap)
# Select the file from the file chooser
fileToLoad <- file.choose(new = TRUE)
# Read in the CSV data and store it in a variable
origAddress <- read.csv(fileToLoad, stringsAsFactors = FALSE)
# Initialize the data frame
geocoded <- data.frame(stringsAsFactors = FALSE)
# Loop through the addresses to get the latitude and longitude of each address and add it to the
# origAddress data …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,其中包含Zipcode以及lat和log.我想从该纬度和经度中找出医院/银行列表(2公里内).
怎么做?
Long/Lat数据看起来像
store_zip lon lat
410710 73.8248981 18.5154681
410209 73.0907 19.0218215
400034 72.8148177 18.9724162
400001 72.836334 18.9385352
400102 72.834424 19.1418961
400066 72.8635299 19.2313448
400078 72.9327444 19.1570343
400078 72.9327444 19.1570343
400007 72.8133825 18.9618411
400050 72.8299518 19.0551695
400062 72.8426858 19.1593396
400083 72.9374227 19.1166191
400603 72.9781047 19.1834148
401107 72.8929 19.2762702
401105 72.8663173 19.3053477
400703 72.9992013 19.0793547
401209 NA NA
401203 72.7983705 19.4166761
400612 73.0287209 19.1799265
400612 73.0287209 19.1799265
400612 73.0287209 19.1799265
Run Code Online (Sandbox Code Playgroud) 过去,我已经多次使用ggmap来生成以特定坐标为焦点的地图。通常,它非常简单,只需通过qmap()中的location =参数定义焦点,然后根据需要在地图上添加几何图形即可。
今天,我是一段时间内第一次打开ggmap,但是它在执行最基本的映射任务方面并没有成功。
devtools::install_github("dkahle/ggmap") #Making sure I'm up-to-date
library(ggmap)
qmap(location = "White House", zoom = 14, source = "osm")
Run Code Online (Sandbox Code Playgroud)
产生以下错误:
#Error in data.frame(ll.lat = ll[1], ll.lon = ll[2], ur.lat = ur[1], ur.lon = ur[2])
: arguments imply differing number of rows: 0, 1
Run Code Online (Sandbox Code Playgroud)
我已经挖了好几个小时了。我尝试改用get_map(),但会产生相同的错误。
有任何想法吗?
更新#1
我已经进行了R / RStudio的全新安装,从全新的位置(devtools,tidyverse,ggmap)重新安装软件包。但是,错误仍然存在。
更新#2
get_map()正如我希望通过ggmap命令进行的那样,在自动进行地理编码的过程中没有运气。
我求助于手动指定此地图焦点的纬度/经度坐标。
qmap(location=c(lon=-77.035,lat=38.897), zoom = 14, source = "google")
Run Code Online (Sandbox Code Playgroud)
感谢camille提醒我开放街道地图(osm)源存在已知问题(通常与我一起进行故障排除)。
我已经尝试在几种不同的机器上,在几种不同的网络上进行尝试,只是因为看来某些人在此问题的根源上遇到了本地网络/计算机问题。现在想知道是否有人能够qmap()不再使用纬度/经度坐标来指定位置,还是这个问题对我来说是唯一的。
刚刚过去的这个夏天,我正在对R中,我使用的封装代码mapview和ggmap.在夏天,代码工作正常.在过去的一周里,我运行了代码而没有任何更改,当我使用时,我收到以下消息mapview:
mapview(as(tr10, "Spatial"), zcol = "utc_timestamp", lwd = 5,
legend = TRUE)
Error in htmlwidgets::sizingPolicy(defaultWidth = defaultWidth, defaultHeight = defaultHeight, :
unused argument (browser.external = FALSE)
Run Code Online (Sandbox Code Playgroud)
我没有对我的代码进行任何更改,我升级包以防万一,但仍然无法正常工作.并与ggmap我得到以下几点:
puerto_rico <- get_map(location = c(lon = mean(long), lat = mean(lat)),
maptype = "terrain", source = "google",
zoom = 12)
Error in download.file(url, destfile = tmp, quiet = !messaging, mode = "wb") :
cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=18.2,-67.1&zoom=12&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false'
In addition: Warning message:
In download.file(url, destfile = tmp, …Run Code Online (Sandbox Code Playgroud) 我已经使用 package ggmapsinRstudio绘制空间分布图几个月了。
用于绘制地图的基本代码terrain-background行如下:
### Load packages ####
library(tidyverse); library(googlesheets4); library(openintro)
library(maps); library(ggmap); library(ggthemes); library(Cairo)
#### Set bounding box of Africa ####
bbox2 <- c(left = -18.63,
right = 52.03,
bottom = -35.32,
top = 38.96)
Africa <- get_stamenmap(
bbox = bbox2,
maptype = c("terrain-background"),
zoom = 7)
Run Code Online (Sandbox Code Playgroud)
从今天早上开始,返回如下错误:
Error in f(init, x[[i]]) :
number of rows of matrices must match (see arg 2)
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,这些代码行在过去几个月中一直运行良好(于 2023 年 10 月 2 日绘制了同一区域)。我还尝试过之前绘制的先前区域(例如欧洲)并返回相同的错误。
我尝试了几种解决方案:重新启动 R 会话、更新 R …