2

データセットの各「タイプ」の時系列データをプロットしようとしていますが、各プロットのデータの一部を拡大したインセットを含めたいと考えています。個々のプロットでインセットを機能させることはできますが、ファセットを使用してすべてのプロットを一度に作成しようとすると問題が発生します。

はめ込みプロットを追加するために使用した方法は、この回答に基づいています: https://stackoverflow.com/a/55635330/11985177

PDFの複数のページにまたがるプロットをファセットするために使用した方法は、次の回答に基づいています: https://stackoverflow.com/a/48544261/11985177

require(ggplot2)
require(ggforce)
require(ggpmisc)

#create example dataframe
exampledf<- data.frame("Time"= rep(1:50, 10), "Type"= rep(1:10, each=50), "Var1"= rnorm(1000), "Var2"= rnorm(1000))


graph_inset_facet<- function(df){

  mainplot<- ggplot(df,
                 aes(x=Time, y=value))+
    geom_point(aes(y=Var1, color= "Var1"))+
    geom_point(aes(y= Var2, color="Var2"))


  insetdf<-tibble(x = 0.9, y = 0.9,
              plot = list(mainplot +
                            coord_cartesian(xlim = c(40, 45)) +
                            labs(x = NULL, y = NULL)))

  mainplot +
    expand_limits(x = 0, y = 0) +
    geom_plot_npc(data = insetdf, aes(npcx = x, npcy = y, label = plot))

  #wd is working directory
  pdf(file =  paste(wd, "facet inset.pdf"))
  for(i in 1:2){
    print(mainplot+
            facet_grid_paginate(df$Type, nrow = 5, ncol = 1, page = i))

  }
  dev.off()
}

このコードは、「タイプ」によってファセットされたメイン プロットを含む pdf を印刷しますが、挿入プロットは表示されません。print for ループ内で expand_limits および geom_plot_npc 関数を使用してコードを実行しようとしましたが、挿入グラフはまだ表示されませんでした。

4

0 に答える 0