绘制geom_polygon地图时更改构面的顺序

时间:2019-03-11 17:51:13

标签: r ggplot2 polygon shapefile facet-wrap

我已经使用adehabitatHR软件包将其动物的归巢范围计算为空间多边形。在为每只动物制作归位面多边形时,我“加强”了SpatialPolygonDataframe并将每只动物的所有3个多边形放入一个数据“加强”数据框中,并将所有动物(其中的11个)组合到一个数据框中。

str(f_kuds)
'data.frame':   1832 obs. of  11 variables:
 $ X      : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Fish_ID: int  34931 34931 34931 34931 34931 34931 34931 34931 34931 34931 ...
 $ id     : Factor w/ 2 levels "a","homerange": 2 2 2 2 2 2 2 2 2 2 ...
 $ long   : num  290572 290570 290566 290572 290587 ...
 $ lat    : num  2028966 2028970 2028992 2029003 2029015 ...
 $ order  : int  1 2 3 4 5 6 7 8 9 10 ...
 $ hole   : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ piece  : int  1 1 1 1 1 1 1 1 1 1 ...
 $ group  : Factor w/ 4 levels "a.1","homerange.1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ value  : Factor w/ 3 levels "KUD 50%","KUD 95%",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ fname  : int  34931 34931 34931 34931 34931 34931 34931 34931 34931 34931 ...

我现在使用了包含空间多边形的数据框,以将具有不同多边形(50%KUD,95%和100%MCP)的地图创建到一个由11个小平面组成的绘图中(每只动物1个)。但是,当我更改动物ID在图中的放置顺序时,多边形的颜色会失真(请参见下图)。有没有一种方法可以确保多边形不变形,并且我可以更改希望动物在图中显示的顺序?

level_order<-factor(f_kuds$value, level=c("MCP 100%", "KUD 95%", "KUD 50%"))
cols <- c("MCP 100%" = "turquoise1", "KUD 95%" = "royalblue",  "KUD 50%" = "yellow")
#To change order of animal by ID
f_kuds$fish_order= factor(f_kuds$Fish_ID, levels = c("34936", "45239", "45293", "45290", "45291", "45326", "34933", "34935", "45289", "34931", "45286"))

plot_kuds_f<-ggplot()+
  geom_polygon(data=LandMask_pc, aes(x=long, y=lat), fill="darkgrey")+ #Background Polygon of study site
  geom_polygon(data=f_kuds, aes(x=long, y=lat, fill=level_order))+
  scale_fill_manual(values = cols)+
  #facet_wrap(~fname)+
  facet_wrap(~fish_order, ncol=3, nrow = 4)+
  labs(x="", y="")+
  cowplot::background_grid(major = "none", minor="none")+
  #guides(color=guide_legend("Fish ID")) +  #change title of legend. or below remove it
  theme(legend.title = element_blank(),
        axis.text.x = element_blank(), axis.ticks.x = element_blank(), 
        axis.text.y = element_blank(), axis.ticks.y = element_blank(),
        axis.line = element_blank())
plot_kuds_f

Output of plot_kuds_f figure with distorted colors of polygons

0 个答案:

没有答案