【问题标题】:geom_polygon and geom_path won't remove connecting linesgeom_polygon 和 geom_path 不会删除连接线
【发布时间】:2016-09-15 10:41:48
【问题描述】:

我在绘制多边形时遇到问题,我不明白为什么。 这是我的代码:

#Load coordinates
ices <- read.csv("FILE PATH/ices_coord.csv", sep = ",")
#Reproject to European projection
coordinates(ices)<-c("long","lat")
proj4string(ices) <- CRS("+proj=longlat")
ices_laea<-spTransform(ices, CRS("+proj=laea"))
#Create dataframe
ices_laea_df<-data.frame(ices_laea)

library(ggplot2)
ggplot()+
  geom_polygon(data=ices_laea_df, aes(long,lat,group=group), fill="white", color = "gray70")

我得到了那张地图

但是我如何摆脱连接线(我已将两条线涂成红色,但还有更多)。我很确定使用“group=group”或“group=ICES_area”会起作用,但事实并非如此。而且我的头发已经掉了一半:)

使用 geom_path 代替 geom_polygon 得到相同的结果...

您是否已经遇到过这个问题?你知道修复它的诀窍吗?

非常感谢您的帮助,

弗雷德

PS: you can download the ICES coordinates here

【问题讨论】:

  • 你有关于点需要渲染的顺序的任何数据吗?您的 CSV 似乎没有这个,并且绘制任何多边形似乎会使事情变得混乱。例如ices_laea_df % 过滤器(组 == 14)

标签: r ggplot2


【解决方案1】:

这不是一个答案,而是用于说明的代码:

ices <- readr::read_csv("ices_coord.csv")

purrr::map_lgl(unique(ices$ICES_area), function(area) {
  poly <- dplyr::filter(ices, ICES_area==area)
  identical(poly[1,], poly[nrow(poly),])
})

##  [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
## [11]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
## [21] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
## [31]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

所有这些都需要TRUE 才能获得所需的连接良好的多边形(多边形和路径是有序的点列表,多边形的起点和终点相同)并且它正在运行几乎不可能说出来,因为:

dplyr::count(ices, ICES_area, long, lat) %>% 
  dplyr::filter(n>1) %>% 
  dplyr::ungroup() %>% 
  dplyr::count(ICES_area) %>% 
  dplyr::select(area=1, duplcated_pts=2) %>% 
  print(n=39)
## # A tibble: 39 × 2
##     area duplcated_pts
##    <chr>         <int>
## 1     Ia             1
## 2     Ib             2
## 3    IIa           311
## 4    IIb           322
## 5   IIIa             9
## 6   IIIb             1
## 7   IIIc             1
## 8   IIId            76
## 9    IVa             1
## 10   IVb             1
## 11   IVc             1
## 12   IXa             1
## 13   IXb            10
## 14    Va             6
## 15    Vb            29
## 16   VIa             1
## 17   VIb            21
## 18  VIIa             1
## 19  VIIb             1
## 20  VIIc            21
## 21  VIId             1
## 22  VIIe             1
## 23  VIIf             1
## 24  VIIg             1
## 25  VIIh             1
## 26 VIIIa             1
## 27 VIIIb             1
## 28 VIIIc             1
## 29 VIIId            10
## 30 VIIIe             8
## 31  VIIj            14
## 32  VIIk            66
## 33    Xa            95
## 34    Xb             1
## 35  XIIa           106
## 36  XIIb             1
## 37  XIIc             1
## 38  XIVa             1
## 39  XIVb            65

对于某些组,每组有许多重复点。

【讨论】:

  • hmmmm...看起来很恶心。因此,最简单的解决方案实际上可能是清理 QGIS(或类似)中的多边形,以确保我得到所有多边形的 TRUEs ......谢谢你的插图! :)
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多