Rで解析:ggplot2で大量のプロット時のタイトルや各軸などのテキスト内容の設定が簡単です「ggtibble」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

「ggplot2」パッケージで図のキャプション、タグ、x軸、y軸、タイトル、サブタイトル、タグのテキストの内容を簡単に設定できるパッケージの紹介です。Omics解析時などの大量に同じ体裁の図をプロットする際に利用してはいかがでしょうか。

本パッケージは「ggtibble」コマンドで設定したテキスト列に基づいて、データを分割して、データや「ggplot object」などをtibble classのデータに変換します。変換データを連続プロットするコマンドも収録されています。

なお、紹介コマンドでは参考に「cowplot」パッケージで図を並べてプロット、日本語が含まれていても文字化けせず、図を一つのpdfで保存する方法を紹介しています。

パッケージのバージョンは1.0.1。windows 11のR version 4.3.3で確認しています。

スポンサーリンク

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

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

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

コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。なお、プロット毎にテキストを変更したい個所は「{」と「}」で変数を囲みます。

例えば、Text = c(“Test_01”, “Test_02”)のデータで「てすと、」を「てすと、Test_01」、「てすと、Test_02」にしたい場合は「てすと、{Text}」と記述します。下記例のggtibbleコマンドの記述も確認してください。

# パッケージの読み込み
library("ggtibble")

### データ例の作 成#####
# 「tidyverse」パッケージを読み込む,なければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
# 「ggtext」パッケージを読み込む,なければインストール
if(!require("ggtext", quietly = TRUE)){
  install.packages("ggtext");require("ggtext")
}
# 「cowplot」パッケージを読み込む,なければインストール
if(!require("cowplot", quietly = TRUE)){
  install.packages("cowplot");require("cowplot")
}

set.seed(1234)
n <- 80
TestData <- tibble(X_Times_Data = rep(paste0("Time_0", 1:4), each = 20),
                   Y_Area_Data = sample(c(1:500), n,
                                        replace = TRUE),
                   Name = sample(c("からだに", "いいもの", 
                                   "karada", "good"), n, replace = TRUE),
                   Value = sample(1:10, n, replace = TRUE)) %>%
  group_by(Name) %>%
  mutate(Mean_Value = round(mean(Value), 2),
         Tag = Name) %>%
  ungroup()
########


# x軸,y軸,ラベルやキャプションなどの内容を設定:ggtibbleコマンド
# データ分割(nestする)と{XXXXXXX}で使用する列を指定:outercolsオプション
# データ分割(nestする)だけであれば:gglistコマンドを使用します
Test_gt <- ggtibble(TestData, aes(x = X_Times_Data, y = Y_Area_Data,
                                  fill = X_Times_Data),
                    # x軸,y軸,ラベルやキャプションなどの内容を設定
                    outercols = c("Name", "Mean_Value", "Tag"),
                    caption  = "キャプションです_{Name}",
                    # 対象はggplot2のコマンドと共通
                    labs = list(x = "X軸です:({Name})",
                                y = "Y軸です:【{Name}】",
                                # 「ggtext」パッケージでスタイルを指定
                                title = "<i style='color:blue; font-size:13pt;'>
                                プロットタイトルです:{Name}</i>", 
                                subtitle = "サブタイトルです:Valueの平均{Mean_Value}",
                                tag = "タグです_Name:{Tag}" 
                    )) +
  geom_boxplot() +
  scale_fill_manual(values = c("#D9BB9C", "#AF826B", "#6668A1",
                      "#4B61BA", "yellow")) +
  # 「ggtext」パッケージでスタイルを適応
  theme(title = ggtext::element_markdown())
  

# classの確認
class(Test_gt)

# データ内容の確認
Test_gt
# # A tibble: 5 × 5
#   Name     Mean_Value data_plot                  figure caption                  
#   <chr>         <dbl> <list>                   <gglist> <glue>                   
# 1 いいもの       4.81 <tibble [16 × 3]> A ggplot object キャプションです_いいもの
# 2 R              4.75 <tibble [16 × 3]> A ggplot object キャプションです_R       
# 3 karada         6.1  <tibble [30 × 3]> A ggplot object キャプションです_karada  
# 4 good           5.11 <tibble [18 × 3]> A ggplot object キャプションです_good    
# 5 からだに       5.5  <tibble [20 × 3]> A ggplot object キャプションです_からだに


# ggtibble classをプロットする:knit_printコマンド
knit_print(x = Test_gt)


## 参考_「cowplot」パッケージで図を並べてプロット
plot_grid(Test_gt$figure[[1]],
          Test_gt$figure[[2]],
          Test_gt$figure[[3]],
          Test_gt$figure[[4]])


## 参考_作業フォルダに図を一つのpdfで保存
pdf("Test.pdf", family = "Japan1")
knit_print(x = Test_gt)
dev.off()

実行例

画像をクリックすると拡大します。

・ggtibble classをプロットする:knit_printコマンド

・「cowplot」パッケージで図を並べてプロット

・作業フォルダに図を一つのpdfで保存


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

Amazon audibleの登録の紹介

プライム会員限定で2024年7月22日まで3か月無料体験キャンペーン開催中です。無料体験後は月額1,500円で聞き放題です。なお、聞き放題対象外の本はAudible会員であれば非会員価格の30%引きで購入することが可能です。

Amazon audibleはプロのナレーターが朗読した本をアプリで聞くことができるサービスで、オフライン再生も可能です。通勤や作業のお供にAmazon audibleのご登録はいかがでしょうか。

・AmazonのAudible

https://amzn.to/3L4FI5o

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