本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:ggplotを塗りつぶし「ggpattern」パッケージ

「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))

  }
 }
}
})
```

出力例

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

スポンサーリンク
価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。