Rで解析:パス上にテキストを配置「geomtextpath」パッケージ

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

「ggplot2」パッケージでプロットしたパスにテキストを簡単に配置できるパッケージの紹介です。「ggplot2」パッケージと合わせて利用します。なお、RStudioで利用する際には日本語テキストの配置が空白で表示されてしまいます。「ragg」パッケージを利用することで解決することが可能です。

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

スポンサーリンク

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

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

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

RStudioでの文字化け防止

RStudio 2021.09.1+372で確認しています。下記、コマンドを実行後、RStudioのメニューを「Tools > Global Options > General > Graphics」と移動しBackendを「AGG」に指定してください。その後、RStudioを再実行すると準備完了です。

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

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。日本語をプロットする時は「ragg」パッケージの導入と設定が必要。また、familyオプションへ日本語フォント名を設定します。

#パッケージの読み込み
library("geomtextpath")
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
###データ例の作成#####
set.seed(1234)
n <- 30
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
                                  replace = TRUE),
                   X_Data = sample(c(1:50), n, replace = TRUE),
                   Sin_Data = sin(1:n) * 30:1,
                   Cos_Data = cos(1:n) * 30:1)
#&#12486;&#12461;&#12473;&#12488;&#12487;&#12540;&#12479;
#Markdown,HTML,CSS&#12391;
#&#33394;,&#12501;&#12457;&#12531;&#12488;&#12501;&#12449;&#12511;&#12522;&#12540;,&#12501;&#12457;&#12531;&#12488;&#12469;&#12452;&#12474;,&#22826;&#23383;,&#26012;&#20307;,&#19979;&#20184;&#12365;&#25991;&#23383;,&#19978;&#20184;&#12365;&#25991;&#23383;&#12364;&#21487;&#33021;
TextData <- "<b style='color:black'>&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12418;&#12398;</b>_KARADANI IIMONO"
########

#&#12497;&#12473;&#19978;&#12395;&#12486;&#12461;&#12473;&#12488;&#12434;&#37197;&#32622;:geom_textpath&#12467;&#12510;&#12531;&#12489;
###&#26085;&#26412;&#35486;&#12434;&#12503;&#12525;&#12483;&#12488;&#12377;&#12427;&#26178;&#12399;ragg&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#23566;&#20837;&#12392;&#35373;&#23450;&#12364;&#24517;&#35201;###
###family&#12458;&#12503;&#12471;&#12519;&#12531;&#12408;&#26085;&#26412;&#35486;&#12501;&#12457;&#12531;&#12488;&#21517;&#12434;&#35373;&#23450;&#12377;&#12427;###
#&#12486;&#12461;&#12473;&#12488;&#12487;&#12540;&#12479;:label&#12458;&#12503;&#12471;&#12519;&#12531;;ggplot&#12467;&#12510;&#12531;&#12489;&#20869;&#12391;&#12418;&#35373;&#23450;&#21487;&#33021;
#&#12497;&#12473;&#19978;&#12391;&#12398;&#12503;&#12525;&#12483;&#12488;&#20301;&#32622;:hjust&#12458;&#12503;&#12471;&#12519;&#12531;;0-1&#12398;&#31684;&#22258;
#&#12497;&#12473;&#12408;&#12398;&#12486;&#12461;&#12473;&#12488;&#12398;&#36969;&#24540;&#35519;&#25972;:text_smoothing&#12458;&#12503;&#12471;&#12519;&#12531;;0-100&#12398;&#31684;&#22258;
#&#30701;&#12377;&#12366;&#12427;&#12497;&#12473;&#12408;&#12398;&#37197;&#32622;&#21487;&#21542;:remove_long&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE,FALSE
#Markdown,HTML,CSS&#12398;&#36969;&#24540;&#21487;&#21542;:rich&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE,FALSE
#&#25991;&#23383;&#12469;&#12452;&#12474;:size&#12458;&#12503;&#12471;&#12519;&#12531;
#&#25991;&#23383;,&#32218;&#12398;&#33394;:textcolour,linecolour&#12458;&#12503;&#12471;&#12519;&#12531;
ggplot(TestData, aes(x = Sin_Data, y = Cos_Data)) +
  geom_textpath(label = TextData,
                hjust = 0.5,
                text_smoothing = 10,
                remove_long = FALSE,
                rich = TRUE,
                size  = 6,
                textcolour = "#E41A1C",
                linecolour = "#377eb8",
                family = "Yu Gothic") +
    labs(subtitle = "geom_textpath&#12467;&#12510;&#12531;&#12489;") 

#&#12497;&#12473;&#19978;&#12395;&#12486;&#12461;&#12473;&#12488;&#12521;&#12505;&#12523;&#12434;&#37197;&#32622;:geom_labelpath&#12467;&#12510;&#12531;&#12489;
#&#12458;&#12503;&#12471;&#12519;&#12531;&#12399;geom_textpath&#12467;&#12510;&#12531;&#12489;&#12434;&#21442;&#29031;
ggplot(TestData, aes(x = Sin_Data, y = Cos_Data)) +
  geom_labelpath(label = TextData,
                 hjust = 0.5,
                 size  = 6,
                 rich = FALSE,
                 textcolour = "#E41A1C",
                 boxcolour = "#377eb8",
                 fill = "yellow",
                 family = "Yu Gothic") +
  labs(subtitle = "geom_labelpath&#12467;&#12510;&#12531;&#12489;") 
  
#&#12464;&#12521;&#12501;&#12395;&#12486;&#12461;&#12473;&#12488;&#12434;&#37197;&#32622;:geom_textdensity&#12467;&#12510;&#12531;&#12489;
#&#35201;&#32032;&#12398;&#12487;&#12540;&#12479;&#12434;&#22522;&#28310;&#12395;&#37197;&#32622;&#20301;&#32622;&#12434;&#25351;&#23450;:hjust&#12458;&#12503;&#12471;&#12519;&#12531;;
#"xmin","xmid","xmax","ymin","ymid","ymax","auto"&#12364;&#35373;&#23450;&#21487;&#33021;
ggplot(TestData, aes(x = X_Data,
                     colour = Group,
                     label = Group)) +
  geom_textdensity(hjust = "ymax",
                   vjust = -0.3, 
                   size = 5) +
  labs(subtitle = "geom_textdensity&#12467;&#12510;&#12531;&#12489;")

出力例

・geom_textpathコマンド

・geom_labelpathコマンド:rich = FALSE

・geom_textdensityコマンド


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

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