「ggplot2」パッケージのプロットを色々なパターンで塗りつぶすことができるパッケージの紹介です。大変多くのコマンドが収録されていて、全てを紹介することができません。紹介ではパッケージに収録されている、プロットが塗りつぶし可能なコマンド(”geom_map_pattern”,”geom_sf_pattern”を除く)を紹介します。
「ggpattern」パッケージ:https://coolbutuseless.github.io/package/ggpattern/index.html
実行コマンドとRmdファイルで紹介します。Rmdファイルは実行前に「パッケージのインストール」のコマンドを実行してください。なお、実行はRStudioがおすすめです。
パッケージのバージョンは0.4.1。実行コマンドはRStudioのRStudio Desktop 2021.09.2+382、windows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("ggpattern") install.packages("tidyverse") install.packages("flexdashboard")
実行コマンドとRmdファイル
詳細はコマンド、Rmdファイル(エンコード:UTF-8)、パッケージヘルプを確認してください。
--- title: "ggpatternパッケージ" output: flexdashboard::flex_dashboard: orientation: columns social: menu source_code: embed runtime: shiny --- ```{r global, include=FALSE} #必要パッケージの読み込み library("ggpattern") library("tidyverse") library("flexdashboard") ###データ例の作成##### set.seed(1234) n <- 30 TestData <- tibble("Group" = sample(paste0("Group", 1:3), n, replace = TRUE), "Data1" = sample(1:10, n, replace = TRUE), "Data2" = sample(1:10, n, replace = TRUE)) ######## #「ggpattern」パッケージ:ggplot2 geoms:"geom_map_pattern","geom_sf_pattern"を除く GeomName <- c("geom_rect_pattern", "geom_bar_pattern", "geom_histogram_pattern", "geom_bin2d_pattern", "geom_boxplot_pattern", "geom_col_pattern", "geom_crossbar_pattern", "geom_ribbon_pattern", "geom_area_pattern", "geom_density_pattern", "geom_polygon_pattern", "geom_tile_pattern", "geom_violin_pattern") Pattern <- c("none", "stripe", "wave", "circle", "crosshatch") ``` Column {data-width=500} ------------------------------------- ```{r} selectInput('GgGeom', 'Select ggplot2 geom', GeomName) selectInput('FillPattern', 'Select Pattern', Pattern) ``` ###プロット ```{r} renderPlot({ if(input$GgGeom %in% c("geom_rect_pattern")){ ggplot(TestData, aes(xmin = Data1 - 3, xmax = Data1 + 3, ymin = Data2 - 3, ymax = Data2 + 3, pattern_density = Group, col = Group, fill = Group)) + eval(parse(text = paste0(input$GgGeom, "(", "pattern = '", input$FillPattern,"')"))) + theme_bw() + labs(title = paste0("パレット名:", input$GgGeom)) }else{ if(input$GgGeom %in% c("geom_bar_pattern", "geom_histogram_pattern", "geom_density_pattern")){ ggplot(TestData, aes(x = Data1, col = Group, pattern_density = Group, fill = Group, alpha = 0.5)) + eval(parse(text = paste0(input$GgGeom, "(", "pattern = '", input$FillPattern,"')"))) + theme_bw() + labs(title = paste0("パレット名:", input$GgGeom)) }else{ if(input$GgGeom %in% c("geom_bin2d_pattern", "geom_boxplot_pattern", "geom_col_pattern", "geom_tile_pattern")){ ggplot(TestData, aes(x = Group, y = Data1, pattern_density = Group, col = Group, fill = Group)) + eval(parse(text = paste0(input$GgGeom, "(", "pattern = '", input$FillPattern,"')"))) + theme_bw() + labs(title = paste0("パレット名:", input$GgGeom)) }else{ ggplot(TestData, aes(x = Data1, y = Data2, xmin = Data1 - 3, xmax = Data1 + 3, ymin = Data2 - 3, ymax = Data2 + 3, pattern_density = Group, col = Group, fill = Group, alpha = 0.5)) + eval(parse(text = paste0(input$GgGeom, "(", "pattern = '", input$FillPattern,"')"))) + theme_bw() + facet_grid(Group~.) + labs(title = paste0("パレット名:", input$GgGeom)) } } } }) ```
出力例
少しでも、あなたの解析が楽になりますように!!