R:使用north2()创建带有北向箭头的地图后,使用ggsave保存图形

时间:2018-04-30 17:13:30

标签: r ggplot2 maps

我对R很新,所以任何帮助都将不胜感激!我想用ggsave函数创建它之后用北箭头保存我的地图。但是,在我的地图中,我使用ggsn包中的函数north2(),它只保存地图而不是北箭头。我知道我可能错过了一些非常简单的东西,但我似乎无法弄明白。我究竟做错了什么??提前谢谢。

graph1<-ggplot()+
  geom_polygon(data=df,colour="black",aes(x=long,y=lat,group=group,fill=ALG))+
  ggtitle("Figure 2.2A: Assessment Results for\nGeneral Aquatic Life Use, Spatial Extent")+
  xlab("")+
  ylab("")+
  coord_equal()+
  coord_fixed(ratio = 1)+
  ggsn::scalebar(df,location="bottomleft",dist = 50,st.dist=0.02,st.size=3, height=0.01)+
  scale_fill_manual("Aquatic Life Designated\nUse 2014 Assessment",values=c((values=c(colors))))+
  cowplot::background_grid(major= "none",minor = "none") +
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(),
        axis.text.y = element_blank(), axis.ticks.y = element_blank(),
        axis.line = element_blank(),
        panel.background = element_blank(),
        legend.position=c(0.8,0.1),
        panel.border = element_rect(fill=NA),
        legend.background = element_blank(),
        legend.text = element_text(size=7),
        legend.title = element_text(colour="black", size=8, face="bold"),
        plot.title=element_text(size=15, face="bold",vjust=1.0,hjust = .3))

ggsave(file="Figure 2.2A.pdf",width=11.5,height=8)
north2(graph1, x = 0.73, y = 0.89, scale = 0.1, symbol = 3)
dev.off()

1 个答案:

答案 0 :(得分:2)

您需要使用基本功能pdf而不是ggsave

pdf(file="Figure 2.2A.pdf",width=11.5,height=8)
north2(graph1, x = 0.73, y = 0.89, scale = 0.1, symbol = 3)
dev.off()

这是因为north2函数以某种非标准的方式工作;它绘制结果图而不是返回它。在帮助中,它解释了为什么存在这种变体。

普通north功能更标准;你会把它添加到你的情节中,比如

graph1 + north(data=df, ...)

然后你可以按预期使用ggsave函数(在此之后,不是之前)。

请注意,对于传统绘图,您首先使用pdf()打开文件,然后运行绘图代码,然后使用dev.off关闭文件;但是对于ggplots,你首先制作你的情节,然后拨打ggsave,不需要dev.off