Сохраните ggplot, позволяющий панорамировать и масштабировать
Я создаю серию небольших линейных графиков, относящихся к разным регионам, которые затем сохраняю в виде гробов и наносю на карту Европы. Я могу сохранить это как файл png, а затем могу увеличивать отдельные части сохраненного изображения с помощью стандартного масштабирования фотографий Windows. Однако это довольно медленно, увеличенное изображение загружается довольно долго. Мне было интересно, есть ли лучший способ сделать это, и я попытался с svgPanZoom, но я не мог получить нужные масштабы для готовых графиков, чтобы они были видны, вместо этого вы могли видеть оси, а не сам график, и я также не мог подумайте, как сохранить график, чтобы панорамирование и масштабирование оставались возможными.
Кто-нибудь знает лучший способ сделать это? Мой код ниже, но набор данных слишком велик для публикации примера.
###species_preds is a list of model prediction dataframes for different 100km squares in Europe
##so dt is a dataframe with a column for julian day, one for prediction and one each for the upper and lower confidence intervals
##list_100km_sp is a dataframe of the x and y centroid locations of all the 100km squares we have prediction
data for
##Europe is a base map, just a filled polygon of Europe
list_plots<-list()
for (g in 1:length(species_preds)){
dt<-species_preds[[g]]
#qualify what's plotted by sample size?
p<-ggplot(data=dt)+
geom_line(aes(x=date, y=round(pred,3), group=1),linetype="solid", size=0.05)+
geom_line(aes(x=date, y=round(u.pred,3), group=1),linetype="dashed", size=0.05)+
geom_line(aes(x=date, y=round(l.pred,3), group=1),linetype="dashed", size=0.05)+
xlab("Julian_date")+ylab("Prob of occurrence")+
theme(legend.position = "none",panel.background = element_blank(), panel.border = element_blank(),
panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
plot.background = element_blank(),axis.line = element_line(colour = "black", size=0.05),
axis.ticks=element_line(size=0.05),
text = element_text(size=1), axis.text.x = element_text(angle=90, hjust=1))
list_plots[[g]]<-ggplotGrob(p)
}
##plot all on a map
plot <- Europe + annotation_custom(grob=list_plots[[1]], xmin=list_100km_sp$centroid_x_rounded[1], xmax=list_100km_sp$centroid_x_rounded[1]+130000, ymin=list_100km_sp$centroid_y_rounded[1], ymax=list_100km_sp$centroid_y_rounded[1]+130000)
for (i in 2:length(list_plots)){
plot <- plot + annotation_custom(grob=list_plots[[i]], xmin=list_100km_sp$centroid_x_rounded[i], xmax=list_100km_sp$centroid_x_rounded[i]+130000, ymin=list_100km_sp$centroid_y_rounded[i], ymax=list_100km_sp$centroid_y_rounded[i]+130000)
}
ggsave(plot, file="species.png"), dpi=600, height = 90, width =80, units="cm", pointsize=6)