- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢用 ggmap
绘制街道在特定区域。我通过立交桥 api 从 osm 获取数据。它适用于大多数街道,geom_path
.然而,有些街道是乱七八糟的。任何提示表示赞赏。
请看 http://overpass-turbo.eu/对于所需的输出。您可以在下面的 R 代码中找到查询。
library(httr)
library(tidyverse)
#> ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
#> ✔ ggplot2 2.2.1 ✔ purrr 0.2.4
#> ✔ tibble 1.4.2 ✔ dplyr 0.7.4
#> ✔ tidyr 0.8.0 ✔ stringr 1.3.0
#> ✔ readr 1.1.1 ✔ forcats 0.3.0
#> ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag() masks stats::lag()
library(ggmap)
library(rlist)
# Get data from overpass api
query <- paste('[out:json];',
'(way["highway"~"primary|residential"](53.5970, 9.9010, 53.6050, 9.9080););',
'(._;>;);',
'out body;')
url <- 'http://overpass-api.de/api/interpreter'
r <- POST(url = url, body = query, encode = 'json')
# Tidy data
nodes <- content(r)$elements %>% list.filter(type == 'node')
ways <- content(r)$elements %>% list.filter(type == 'way')
df_nodes <- nodes %>%
list.select(type, id, lat, lon) %>%
bind_rows()
df_ways <- ways %>%
lapply(function(x) list.append(x, street = x$tags$name)) %>%
list.select(street, nodes)
df_ways <- map(df_ways, function(x) x %>% as_tibble) %>%
bind_rows() %>%
mutate(id = unlist(nodes))
df <- df_ways %>% left_join(df_nodes, by = 'id')
head(df)
#> # A tibble: 6 x 6
#> street nodes id type lat lon
#> <chr> <list> <dbl> <chr> <dbl> <dbl>
#> 1 Reichsbahnstraße <int [1]> 38893884 node 53.6 9.91
#> 2 Reichsbahnstraße <int [1]> 55079985 node 53.6 9.91
#> 3 Reichsbahnstraße <int [1]> 38893882 node 53.6 9.91
#> 4 Reichsbahnstraße <int [1]> 38893881 node 53.6 9.91
#> 5 Reichsbahnstraße <int [1]> 380820539 node 53.6 9.91
#> 6 Reichsbahnstraße <int [1]> 38893879 node 53.6 9.91
# Get map
lat <- (max(df$lat)+min(df$lat))/2
lon <- (max(df$lon)+min(df$lon))/2
hamburg <- get_map(location = c(lon = lon, lat = lat), zoom = 16)
#> Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=53.601726,9.90531&zoom=16&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
# Plot
ggmap(hamburg) +
geom_path(data = df, aes(x = lon, y = lat, color = street), size = 2)
#> Warning: Removed 3 rows containing missing values (geom_path).
最佳答案
每当街道有许多分支时,您就会遇到此问题,因为 geom_path()
将简单地将每两个连续点与一条直线连接起来。
让我们以“Reichsbahnstraße”为例:
lon <- df %>% filter(street == "Reichsbahnstraße") %>% .$lon
lat <- df %>% filter(street == "Reichsbahnstraße") %>% .$lat
lat[1] == lat[41] & lon[1] == lon[41]
# returns TRUE
geom_path()
从点 1(交叉点,见下文)开始,绘制街道的一部分(走向东北),然后再次回到交叉点(索引 41)以绘制下一个分支。
c(7, 8, 9, 10, 7, 6)
做
c(7, 8, 9, 10, 9, 8, 7, 6)
)。有点像如果你试图用铅笔画街道而不把它从纸上取下来你会怎么做。
关于r - 使用 ggmap 和 geom_path 绘制街道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50086143/
我注意到 ggplot2 中的 geom_path() 有一个奇怪的行为。我不确定是我做错了什么还是错误。 这是我的数据集: x <- abs(rnorm(10)) y <- abs(rnorm(10
我正在尝试在 ggplot 中制作折线图,但我很难诊断我的错误。我已经通读了几乎所有类似的线程,但一直无法解决我的问题。 我正在尝试绘制日本的 CPI。我从 FRED 在线下载了数据。 我的 str
以下是一个可重现的示例,其中包含所需的输出。 # Example library(tidyverse) df % mutate(y = y*100) # human eye draws the rou
我有 12 个变量, M1, M2, ..., M12 ,为此我计算了某个统计量 x . df = data.frame(model = factor(paste("M", 1:28, sep =
我正在处理空间数据。我想创建一个移动路径的动画,旧数据逐渐消失。我想出了如何用点创建淡出效果,但似乎没有内置支持 geom_path ( Error: path layers not currentl
我正在尝试使用 ggplot、geom_line 和 facet_wrap 创建多线图。图表已成功创建并显示,但是以下消息也随图表一起显示: geom_path: Each group consist
我喜欢用 ggmap 绘制街道在特定区域。我通过立交桥 api 从 osm 获取数据。它适用于大多数街道,geom_path .然而,有些街道是乱七八糟的。任何提示表示赞赏。 请看 http://ov
我正在使用 ggplot2 创建海洋的垂直剖面。我的原始数据集创建了“尖峰”以形成平滑的曲线。我希望使用 geom_smooth()。我还希望这条线根据观察的顺序(而不是根据 x 轴)前进。当我使用
我正在编写代码来创建多个等高线数据集。我的步骤是: 用生成原始数据 T% select(fx, fy) %>% mutate(row = row_number()) %>% g
我有一个 shapefile(多边形),我只想绘制其中的一部分,因此使用 ggplot 的 geom_path 我用 xlim 和 ylim 限制了可见路径。形状文件是 available here
这个问题是来自以前回答的问题的新问题,位于:Plot mean of data within same ggplot 正如您在下面的 .jpg 图片中看到的那样——红线 geom_path 被挤压在一
我正在使用 ggplot 的 geom_path() 绘制一系列财务预测。 ggplot(df,aes(year,pot,color=iRate)) + geom_path() + theme(le
我想绘制带有 SNP 标记的核型图。 它与函数 segments 一起使用,但我想使用 ggplot2 包来显示优雅的图形。 ggbio: 我用函数 layout_karyogram 检查了 ggbi
我打算创建一个箱线图并突出显示成对比较的显着性水平。这已在 previous post. 中处理 当我对我的数据集做同样的事情时,我收到以下错误: "Incompatible lengths for
我试图绘制一个物体(假设它是一个风向标)随时间变化的角度。我想将其绘制在极坐标系上,并通过路径连接时间点,显示角度如何随时间变化。我只是有一个数据框,其中一列是角度(以度为单位)(数字),然后是记录角
我的情节由三个圆圈和两个点组成。我希望完成两个看似简单但事实证明很难的任务。我希望 1) 创建两个图例 & 2) 改变家庭点的形状、大小和颜色。使用以下函数生成的圆... circleFun %
我正在同一个 ggplot 中绘制 geom_path 对象和 geom_text 对象,但遇到以下问题: #load the data frames df1 <- data.frame(x=c(32
数据:https://drive.google.com/file/d/0B20HmmYd0lsFSmZhYUk3bkRTNFk/edit?usp=sharing plot.df<- read.tabl
使用此数据框(“df”): year pollution 1 1999 346.82000 2 2002 134.30882 3 2005 130.43038 4 2008 88.27546 我尝试
我是一名优秀的程序员,十分优秀!