ggplot 地图中的点分布

points distribution in map with ggplot

我有这个文件和数据:

https://gofile.io/?c=JvglSo

https://pastebin.com/ePymwswn

和这个脚本:

#open shp file
library(rgdal)
map <- readOGR(dsn= "/rj_municipios", layer = "33MUE250GC_SIR")

#open data file
ind_mapa <- read.csv("ind_mapa.csv", sep=";")

#map
library(ggplot2)
library(ggrepel)
mapdf <-fortify(map)

ggplot(data= mapdf, aes(x=long, y=lat, group=group)) +
  geom_path() +
  coord_map("mercator") +
  xlim(-42.040,-41.973)+
  ylim(-23.015, -22.949)+
  theme_bw() +
  geom_jitter(data=ind_mapa, width= .0015, height = .0015, size=3,alpha=.7,
              aes(x=lon, y=lat, group= code, color = code)) +
  geom_text_repel(data= ind_mapa, aes(x=lon, y=lat), group= code, label=ano)

有了这个我有两个问题,标签 "ano" 没有出现:

Error in layer(data = data, mapping = mapping, stat = stat, geom = GeomTextRepel, : object 'code' not found

并且我使用了 geom_jitter 这样点就不会重叠,但是它们变得凌乱而不是均匀分布在原始点和中心点上。

您的 labelgroup 价值观需要符合美学。您的最后一行代码应为:

geom_text_repel(data= ind_mapa, aes(x=lon, y=lat, group= code, label=ano))

收到的错误信息提示您:geom = GeomTextRepel, : object 'code' not found。使用它,您知道 geom_text_repel() 调用有问题,特别是 code.

的参数

有趣的事实:将最后一行更改为 geom_text_repel(data= ind_mapa, aes(x=lon, y=lat, group= code), label=ano),其中只有 group=codeaes() 调用中。您应该会看到相同的错误消息,但带有 object 'ano' not found.