「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))
}
}
}
})
```
出力例

少しでも、あなたの解析が楽になりますように!!