Rで解析:プロットの一部をハイライト表示するのに便利です「gghighlight」パッケージ


投稿日: Rの解析に役に立つ記事

指定した範囲をハイライト表示した散布図と折れ線グラフを作成するのに便利なパッケージの紹介です。「ggplot2」パッケージのコマンドが利用可能です。また、本パッケージを利用しないでハイライト表示した散布図を作成する一例も紹介します。

パッケージ作者のホームページです。Rの利用方法が紹介されていて参考になります。
・Technically, technophobic.:gghighlightパッケージをCRANで公開しました
 http://notchained.hatenablog.com/entry/2017/10/06/114257

パッケージバージョンは0.0.1。windows 10のR version 3.4.2で動作を確認しています。


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

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

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



コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

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

###データ例の作成#####
n <- 300
#散布図データ
PointData <- data.frame(ID = rep(1:5, len = n),
                        Group = sample(c("A", "B", "C"), n, replace = TRUE),
                        Time_A = abs(rnorm(n)),
                        Time_B = log2(abs(rnorm(n))))
#パッケージの読み込み
#install.packages("tidyverse")
library("tidyverse")
#折れ線グラフデータ
LinePlot <- PointData %>%
  group_by(ID, Group) %>%
  summarise(Mean = mean(Time_B))
########

#散布図の作成:gghighlight_pointコマンド
#ハイライト範囲の設定:predicateコマンド
#ハイライト外のプロット色の設定:unhighlighted_colourコマンド
#プロットラベルの付与:use_direct_labelオプション;FASLEで無し
gghighlight_point(PointData, aes(x = Time_A, y = Time_B, col = Group),
                  predicate = Time_A > .8 & Time_B < -4.5,
                  unhighlighted_colour = "gray",
                  use_direct_label = TRUE, label_key = Group) +
  scale_colour_manual(values = c("#a0b981", "#47547c", "#9f8288")) +
  theme_bw()

#折れ線グラフの作成:gghighlight_lineコマンド
#オプションはgghighlight_pointコマンドを参照
gghighlight_line(LinePlot, aes(x = ID, y = Mean, col = Group),
                 predicate = min(Mean) < -1.3)

###参考:パッケージを利用しないで散布図作成#####
#データを処理
library("tidyverse")
MendoiPointData <- PointData %>%
#if_elseとcase_whenコマンドがポイントです
#case_whenは条件式 ~ 結果で指定します
  mutate(col = if_else(Time_A > .8 & Time_B < -4.5,
                       case_when(Group == "A" ~ "#a0b981",
                                 Group == "B" ~ "#47547c",
                                 Group == "C" ~ "#9f8288"), "gray")) %>%
  mutate(Label = if_else(Time_A > .8 & Time_B < -4.5, as.character(Group), ""))
#パッケージの読み込み
library("ggplot2")
#install.packages("ggrepel")
#ラベル付与に便利な「ggrepel」パッケージ
#https://www.karada-good.net/analyticsr/r-377
library("ggrepel")
#プロット,scale_colour_identityコマンドがポイント
MendoiPlot <- ggplot(MendoiPointData, aes(x = Time_A, y = Time_B,
                                          label = Label, col = col))
MendoiPlot +
  geom_point() +
  geom_label_repel() +
  scale_colour_identity(guide = "none") +
  theme_bw()
########

出力例

・gghighlight_pointコマンド

・gghighlight_lineコマンド

・参考:パッケージを利用しないで散布図作成


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

スポンサードリンク

関連コンテンツ


スポンサードリンク