Rで解析:R MarkDownで紹介!カラーパレットがいっぱい「ggsci」パッケージ

Rの解析に役に立つ記事

ggplot2でも利用できるカラーパレットが収録されているパッケージの紹介です。コマンドの紹介のRmdファイルを実行するとカラーパレットを確認できるようにしました。

パッケージバージョンは2.9。実行コマンドはwindows 11のR version 4.1.2で確認しています。

スポンサーリンク
スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("ggsci")

コマンドの紹介

詳細はコマンド、各パッケージのヘルプを確認してください。以下からファイルをダウンロードしRStudioで実行しても同じコマンドの紹介内容と同じ結果が得られます。なお、拡張子はRmdです。

---
title: "ggsci"
output:
  flexdashboard::flex_dashboard:
  orientation: columns
social: menu
source_code: embed
runtime: shiny
---
  
  ```{r global, include=FALSE}
#必要パッケージの読み込み
if(!require("ggsci", quietly = TRUE)){
  install.packages("ggsci");require("ggsci")
}
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
if(!require("flexdashboard", quietly = TRUE)){
  install.packages("flexdashboard");require("flexdashboard")
}
if(!require("DT", quietly = TRUE)){
  install.packages("DT");require("DT")
}

###データ例の作成#####
n <- 100
TestData <- data.frame("Group" = sample(paste0("Group", 1:5), n, replace = TRUE),
                          "Data1" = sample(1:10, n, replace = TRUE),
                          "Data2" = sample(LETTERS[1:24], n, replace = TRUE))
########
#「ggsci」パッケージ:カラーパレット名
GgSColName <- c("AAAS Journal Color Palettes", "D3.js Color Palettes", "The Futurama Color Palettes",
                   "Integrative Genomics Viewer (IGV) Color Palettes", "Journal of Clinical Oncology Color Palettes",
                   "Lancet Journal Color Palettes", "LocusZoom Color Palette", "NEJM Color Palettes",
                   "NPG Journal Color Palettes", "Rick and Morty Color Palettes", "The Simpsons Color Palettes",
                   "Star Trek Color Palettes", "The University of Chicago Color Palettes",
                   "UCSC Genome Browser Color Palette")
#「ggsci」パッケージ:ggplot2で使えるシンボル色コマンド
GgScalCol <- c("scale_color_aaas()", "scale_color_d3()", "scale_color_futurama()",
                  "scale_color_igv()", "scale_color_jco()", "scale_color_lancet()",
                  "scale_color_locuszoom()", "scale_color_nejm()", "scale_color_npg()",
                  "scale_color_rickandmorty()", "scale_color_simpsons()", "scale_color_startrek()",
                  "scale_color_uchicago()", "scale_color_ucscgb()")
#「ggsci」パッケージ:ggplot2で使える塗色コマンド
GgScalFill <- c("scale_fill_aaas()", "scale_fill_d3()", "scale_fill_futurama()",
                   "scale_fill_igv()", "scale_fill_jco()", "scale_fill_lancet()",
                   "scale_fill_locuszoom()", "scale_fill_nejm()", "scale_fill_npg()",
                   "scale_fill_rickandmorty()", "scale_fill_simpsons()", "scale_fill_startrek()",
                   "scale_fill_uchicago()", "scale_fill_ucscgb()")
#「ggsci」パッケージ:収録カラーパレットコマンド
GgScalPal <- c("pal_aaas()", "pal_d3()", "pal_futurama()",
                  "pal_igv()", "pal_jco()", "pal_lancet()",
                  "pal_locuszoom()", "pal_nejm()", "pal_npg()",
                  "pal_rickandmorty()", "pal_simpsons()", "pal_startrek()",
                  "pal_uchicago()", "pal_ucscgb()")
#「ggsci」パッケージ:収録各カラーパレットの色数
GgScalNO <- c(10, 10, 12, 51, 10, 9, 7, 8, 10, 12, 16, 7, 9, 26)
```

Column {data-width=500}
-------------------------------------
  ```{r}
selectInput('Colpal', 'Select Color Palette Name', GgSColName)

```

###収録カラーパレット

```{r}
renderDataTable({
  ColCodeData <- eval(parse(text = paste0(GgScalPal[which(GgSColName == input$Colpal)], "(", GgScalNO[which(GgSColName == input$Colpal)], ")")))
  ColCodeData <- data.frame("ColerCode" = strtrim(ColCodeData, 7),
                               "Color" = rep("", length(ColCodeData)))
  datatable(ColCodeData, rownames = FALSE,
            options = list(pageLength = 10, lengthMenu = c(20, 40, 100))) %>%
    formatStyle("Color", valueColumns = "ColerCode",
                backgroundColor = styleEqual(ColCodeData[, 1], ColCodeData[, 1]))
})
```

Column {data-width=500}
-------------------------------------
  
  ###colカラーパレット
  ```{r}
renderPlot({
  ggplot(TestData,
         aes(x = Data1, y = Data2, col = Group)) +
    geom_point(size = 10) +
    theme_bw() +
    eval(parse(text = GgScalCol[which(GgSColName == input$Colpal)])) +
    labs(title = paste0(GgScalCol[which(GgSColName == input$Colpal)], " コマンド"))
})
```

###fillカラーパレット
```{r}
renderPlot({
  ggplot(TestData,
         aes(x = Data2, fill = Group)) +
    geom_histogram(stat = "count") +
    
    
    theme_bw() +
    eval(parse(text = GgScalFill[which(GgSColName == input$Colpal)])) +
    labs(title = paste0(GgScalFill[which(GgSColName == input$Colpal)], " コマンド"))
})
```

出力例


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

タイトルとURLをコピーしました