如何解决使用geom_polygon和geom_text时图例(填充)不显示的问题?

在使用geom_polygongeom_text(没有geom_map)并且将ggplot()参数留空的情况下,我无法添加图例。

我有一个shapefile,我想使用geom_polygon在ggplot2软件包中对其进行绘制。我定义了一个fill变量,以便用某些颜色为某些省份上色。另外,我想在绘图中添加geom_text和一些文本。因此,我有一个geom_polygon的数据集和一个geom_text的数据集,所以我无法在ggplot()中定义我的数据集,因此必须保留它而没有任何已定义的参数(选项{{ 1}}仅在legend = T中可用)。即使我添加ggplot(),图例也不会显示在结果图中。

legend = T

运行此代码后,setwd("E:\\clustering") library(readstata13) library(maptools) #> Warning: package 'maptools' was built under R version 3.5.3 #> Loading required package: sp #> Checking rgeos availability: TRUE library(ggplot2) #> Warning: package 'ggplot2' was built under R version 3.5.3 data=read.dta13("data_cluster_gbd.dta",nonint.factors = T) province=readShapePoly("province_map_created.shp") #> Warning: readShapePoly is deprecated; use rgdal::readOGR or sf::st_read names(province) #> [1] "province" "name_En" "std_ID" "Adj_ID" map=fortify(province,region = "std_ID") names(map) #> [1] "long" "lat" "order" "hole" "piece" "id" "group" names(data)[1]="std_ID" map=merge(map,data,by.x="id",by.y="std_ID",all = T) map$cl_MB=addNA(map$cl_MB) map$select[map$id%in%c(5,9,11,21,23,24)]="Selected" map$select[!map$id%in%c(5,24,30)]="Not selected" map$select[map$id==30]="No data" map$select=factor(map$select,levels = c("Selected","Not selected","No data")) levels(map$select) #> [1] "Selected" "Not selected" "No data" cord.dec = SpatialPoints(cbind(map$long,map$lat),proj4string = CRS("+proj=longlat")) map$long <- spTransform(cord.dec,CRS("+init=epsg:32739"))@coords[,1] map$lat <- spTransform(cord.dec,2] head(map) #> id long lat order hole piece group location pm10 alafkosh #> 1 0 442192.7 13936534 1 FALSE 1 0.1 Markazi 76.27017 34846 #> 2 0 442242.9 13936502 2 FALSE 1 0.1 Markazi 76.27017 34846 #> 3 0 442469.5 13936501 3 FALSE 1 0.1 Markazi 76.27017 34846 #> 4 0 442519.4 13936470 4 FALSE 1 0.1 Markazi 76.27017 34846 #> 5 0 442796.4 13936468 5 FALSE 1 0.1 Markazi 76.27017 34846 #> 6 0 442871.7 13936436 6 FALSE 1 0.1 Markazi 76.27017 34846 #> gharchkosh hasharekosh cancer_all_ages_ir cancer_asir asthma_all_ages_mr #> 1 34012 42975 171.4821 149.5961 11.09847 #> 2 34012 42975 171.4821 149.5961 11.09847 #> 3 34012 42975 171.4821 149.5961 11.09847 #> 4 34012 42975 171.4821 149.5961 11.09847 #> 5 34012 42975 171.4821 149.5961 11.09847 #> 6 34012 42975 171.4821 149.5961 11.09847 #> asthma_asmr copd_all_ages_mr copd_asmr crd_all_ages_mr crd_asmr #> 1 8.701504 16.21552 12.45099 31.42408 24.43511 #> 2 8.701504 16.21552 12.45099 31.42408 24.43511 #> 3 8.701504 16.21552 12.45099 31.42408 24.43511 #> 4 8.701504 16.21552 12.45099 31.42408 24.43511 #> 5 8.701504 16.21552 12.45099 31.42408 24.43511 #> 6 8.701504 16.21552 12.45099 31.42408 24.43511 #> asthma_all_ages_ir asthma_asir copd_all_ages_ir copd_asir #> 1 622.8062 723.4797 114.362 108.6879 #> 2 622.8062 723.4797 114.362 108.6879 #> 3 622.8062 723.4797 114.362 108.6879 #> 4 622.8062 723.4797 114.362 108.6879 #> 5 622.8062 723.4797 114.362 108.6879 #> 6 622.8062 723.4797 114.362 108.6879 #> crd_all_ages_ir crd_asir wealth_index wealth_index_q cl_MB select #> 1 740.0908 834.9011 0.5602894 5 1 Not selected #> 2 740.0908 834.9011 0.5602894 5 1 Not selected #> 3 740.0908 834.9011 0.5602894 5 1 Not selected #> 4 740.0908 834.9011 0.5602894 5 1 Not selected #> 5 740.0908 834.9011 0.5602894 5 1 Not selected #> 6 740.0908 834.9011 0.5602894 5 1 Not selected centroid = aggregate(cbind(long,lat) ~ location,data = map,FUN = function(x) mean(range(x))) centroid=merge(x = centroid,y = map[,c("location","cl_MB","group")],by = "location",all.x = T) centroid=centroid[!duplicated(centroid),] centroid=na.omit(centroid) head(centroid) #> location long lat cl_MB group #> 1 Alborz 482830.93 13977691 <NA> 30.1 #> 1599 Ardabil 245430.51 14254436 6 24.1 #> 4517 Azerbaijan,East 123307.52 14221990 2 3.1 #> 8252 Azerbaijan,West 37824.88 14208963 6 4.1 #> 20096 Bushehr 552982.75 13184877 5 18.1 #> 26747 Bushehr 552982.75 13184877 5 18.2 sample=c("forestgreen","grey","black") ggplot(legend = T) + geom_polygon(data = map,mapping = aes(x = long,y = lat,group = group,fill = select),colour = "black",size = 10^(-100000000)) + geom_text(data = centroid,label = cl_MB),size = 2) + coord_fixed() + xlab("") + ylab("") + scale_fill_manual(map,name = "Clusters",values = sample,drop = F) + theme_bw() + theme( legend.position = "right",legend.title = element_blank(),plot.margin = unit(c(0,0),"cm"),plot.title = element_text(hjust = 0.5),axis.ticks = element_blank(),axis.title=element_blank(),axis.text = element_blank(),strip.background = element_rect(fill = "white"),plot.background = element_blank(),panel.grid = element_blank(),panel.border = element_blank() ) 变量(选择)的图例仍然不会显示!我还尝试将参数fill添加到Show.legend = T,但没有用。 enter image description here

ABC402543999 回答:如何解决使用geom_polygon和geom_text时图例(填充)不显示的问题?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3130164.html

大家都在问