LoginSignup
5
4

More than 5 years have passed since last update.

RStudio と vdiffr でプロットもテストしよう

Last updated at Posted at 2017-12-06

vdiff とは

vdiffr とは プロットのテストをサポートしてくれる R 言語の package です。

プロットのテストを行うことは,まだあまり一般的ではないと思うのですが,
ggplot や ggridges (旧名ggjoy) ではこの vdiffr を用いてプロットのテストを行っています。

vdiffr 利用方法実例

次に実例でもって vdiffr の利用の仕方を示します。
(RStudio を用いて vdiffr でテストをするだけの package を作ります。)

  1. RStudio の package の雛形を作る機能で下記のように入力し Create Project button 押下 (R/hello.R などのパッケージ雛形ができるはずです)

    image.png

  2. install.packages(c("devtools", "testthat", "vdiffr"))

  3. 下記の内容で tests/testthat/test-hello.R を作成 (テストする内容はhelloではなくplotなので本来renameするべきなのですが省略します)

    context("Histograms")
    disp_hist_base <- function() hist(mtcars$disp)
    vdiffr::expect_doppelganger("Base graphics histogram", disp_hist_base)
    
  4. RStudio の Console View で vdiffr::validate_cases() を実行。これでテストの正答となるリファレンス画像 base-graphics-histogram.svg が `tests/figs/histograms' に出来上がります。

  5. この状態で Ctrl+Shift+T もしくは Build View の More メニュー下の Test Package を実行してみてください。下記画像のように エラーは出ないはずです。

    image.png

  6. 次にリファレンス画像 base-graphics-histogram.svg を適当な画像 (ただしそのファイル名は base-graphics-histogram.svg にrenameしてください) に置き換えてもう一度 Ctrl+Shift+T もしくは Build View の More メニュー下の Test Package を実行してみてください。下記画像のようにテストが失敗するはずです。

    image.png

    1. の適当な画像(リファレンスとは異なる画像) を元のリファレンス画像 base-graphics-histogram.svg に戻すと再びテスト結果が問題無くなるはずです。

まとめ

RStudio と vdiffr を使うと簡単にプロットのテストが追加できます。
是非プロットもテストしてみてください。

sessionInfo

> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] vdiffrSample_0.1.0 gdtools_0.1.6      testthat_1.0.2    

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.14            rstudioapi_0.7          fontquiver_0.2.1        xml2_1.1.1              magrittr_1.5           
 [6] roxygen2_6.0.1          devtools_1.13.4         xtable_1.8-2            R6_2.2.2                rlang_0.1.4            
[11] fontBitstreamVera_0.1.1 stringr_1.2.0           tools_3.4.3             withr_2.1.0             htmltools_0.3.6        
[16] commonmark_1.4          yaml_2.1.15             digest_0.6.12           crayon_1.3.4            shiny_1.0.5            
[21] purrr_0.2.4             vdiffr_0.2.1            htmlwidgets_0.9         mime_0.5                memoise_1.1.0          
[26] glue_1.2.0              stringi_1.1.6           compiler_3.4.3          svglite_1.2.1           httpuv_1.3.5           
[31] fontLiberation_0.1.0   
> 
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4