Сохраните 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)

0 ответов

Другие вопросы по тегам