我对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()
答案 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
。