ggrepel:在地图外部打印标签

ggrepel:在地图外部打印标签,r,ggplot2,ggrepel,R,Ggplot2,Ggrepel,我正在用ggplot2绘制中国最大城市的人口地图 初始数据集位于shapefile中,因此我使用readOGR将数据转换为空间向量对象,然后使用fortify将地图转换为数据帧,以便使用ggplot2 我的主要问题是,通过使用geom_标签,标签彼此重叠,因此我改为geom_标签排斥,但现在一些城市标签被放置在地图之外。有没有办法强制geom_label_Reject将标签保留在地图中 干杯 library(rgdal) library(raster) library(ggplot2) ctr

我正在用ggplot2绘制中国最大城市的人口地图

初始数据集位于shapefile中,因此我使用readOGR将数据转换为空间向量对象,然后使用fortify将地图转换为数据帧,以便使用ggplot2

我的主要问题是,通过使用geom_标签,标签彼此重叠,因此我改为geom_标签排斥,但现在一些城市标签被放置在地图之外。有没有办法强制geom_label_Reject将标签保留在地图中

干杯

library(rgdal)
library(raster)
library(ggplot2)

ctry_spdf <- readOGR(dsn=".",layer="COUNTRIES_ALL",verbose=F)
china<-subset(ctry_spdf,ctry_spdf@data$CNTRY_NAME=="China")
cities <- readOGR(dsn=".",layer="cities")

chinese_cities <- intersect(cities,china)

china_df<-fortify(china, region="OBJECTID")
china_ff <- merge(china_df, china@data, by.x = "id", by.y = "OBJECTID")

cities_df <- as(chinese_cities, "data.frame") 

plot_china<- c(geom_polygon(data=china_ff, aes(long, lat, group = group)))

plot_cities<-c(geom_point(data=cities_df,aes(x=POINT_X, y=POINT_Y,col="red")))

#plot_labels<-c(geom_label(data=cities_df,aes(x=POINT_X, y=POINT_Y,label=CITY_NAME))) --previous 
methodology overlapping

plot_labels<-c(geom_label_repel(
arrow = arrow(length = unit(0.03, "npc"), type = "closed", ends = "first"),
force = 10,
data=cities_df,aes(x=POINT_X, y=POINT_Y,label=CITY_NAME) ) )

ggplot()+plot_china+plot_cities+plot_labels+coord_equal() + labs(title = "China", x = "long", y = 
"lat", color = "City") +scale_color_manual(labels = c("Big Cities"), values = c("red")) 
库(rgdal)
图书馆(光栅)
图书馆(GG2)

ctry\u spdf需要将
xlim
ylim
设置为地图限制。需要将
xlim
ylim
设置为地图限制。