R: Сохранение графика с помощью ggsave после использования north2 () для создания карты со стрелкой на север - PullRequest
0 голосов
/ 30 апреля 2018

Я очень плохо знаком с R, поэтому любая помощь будет принята с благодарностью! Я хочу сохранить свою карту с помощью стрелки севера, после того как я ее создаю, с помощью функции ggsave. Тем не менее, на моей карте я использую функцию north2 () из пакета ggsn, и она сохраняет только карту, а не стрелку севера. Я знаю, что, возможно, упускаю что-то очень простое, но, похоже, не могу понять это. Что я делаю неправильно?? Заранее спасибо.

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 голосов
/ 30 апреля 2018

Вам нужно использовать базовую функцию 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...