Rでboxplot()を作成する方法 BoxRStudio でのプロット [例]

R のボックスプロット()

R のボックスプロット() データの分布を四分位別に視覚化し、外れ値の存在を検出するのに役立ちます。ggplot2 ライブラリのジオメトリ オブジェクト geom_boxplot() を使用して、R で boxplot() を描画できます。

airquality データセットを使用して、ggplot で R の boxplot() を紹介します。このデータセットは、1973 年 154 月から XNUMX 月までのニューヨークの空気質を測定します。データセットには XNUMX 個の観測値が含まれています。次の変数を使用します。

  • オゾン:数値変数
  • 風:数値変数
  • 月: XNUMX 月から XNUMX 月まで。 数値変数

創造する Box プロット

R で最初の boxplot() を作成する前に、次のようにデータを操作する必要があります。

  • ステップ 1: データをインポートする
  • ステップ 2: 不要な変数を削除する
  • ステップ 3: 因子水準で月を変換する
  • ステップ 4: 月を開始、中間、終了の XNUMX つのレベルで分割する新しいカテゴリ変数を作成します。
  • ステップ 5: 欠落している観測値を削除する

これらのすべてのステップは、dplyr とパイプライン演算子 %>% を使用して実行されます。

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality % > %

#Step 2
select(-c(Solar.R, Temp)) % > %

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

関数 Glamise() を使用してデータの構造をチェックすることをお勧めします。

glimpse(data_air)

出力:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

データセットには NA が含まれています。それらを削除するのが賢明です。

# Step 5
data_air_nona <-data_air %>% na.omit()	

基本的なボックスプロット

月ごとのオゾンの分布を示す基本的な R boxplot() をプロットしてみましょう。

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

コードの説明

  • 今後使用するためにグラフを保存する
    • box_plot: グラフを変数box_plotに格納します。これは、後で使用する場合や、コードが複雑になりすぎるのを防ぐのに役立ちます。
  • R boxplot() の幾何学的オブジェクトを追加する
    • データセット data_air_nona を ggplot boxplot に渡します。
    • aes() 引数内に、x 軸と y 軸を追加します。
    • + 記号は、R にコードの読み取りを継続させることを意味します。コードを分割することで、コードが読みやすくなります。
    • geom_boxplot() を使用してボックスプロットを作成します。

出力:

Basic Box プロット

グラフの側面を変更する

グラフの側面を反転できます。

box_plot +
  geom_boxplot()+
  coord_flip()

コードの説明

  • box_plot: 保存したグラフを使用します。グラフに新しい情報を追加するたびにすべてのコードを書き直す必要がなくなります。
  • geom_boxplot(): R で boxplots() を作成する
  • coord_flip(): グラフの側面を反転します。

出力:

グラフの側面を変更する

外れ値の色を変更する

外れ値の色、形、サイズを変更できます。

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

コードの説明

  • outlier.colour=”red”: 外れ値の色を制御します。
  • outlier.shape=2: 外れ値の形状を変更します。 2は三角形を指します
  • outlier.size=3: 三角形のサイズを変更します。 サイズは数に比例します。

出力:

外れ値の色の変更

要約統計を追加する

R boxplot() に要約統計を追加できます。

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

コードの説明

  • stat_summary() は水平ボックスプロットRに要約を追加できる。
  • 引数 fun.y は、返される統計を制御します。 あなたは平均を使用します
  • 注: 最小値や最大値などの他の統計も利用できます。 複数の統計を同じグラフに表示できます
  • geom = “point”: 平均を点でプロットします
  • size=3: ポイントのサイズ
  • color =”steelblue”: ポイントの色

出力:

要約統計の追加

Box ドットでプロットする

次の水平ボックスプロット R では、ドット プロット レイヤーを追加します。各ドットは観測値を表します。

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

コードの説明

  • geom_dotplot() を使用すると、ビンの幅にドットを追加できます
  • binaxis='y': y 軸に沿ったドットの位置を変更します。 デフォルトでは、x 軸
  • dotsize=1: ドットのサイズ
  • stackdir='center': ドットを積み重ねる方法: XNUMX つの値:
    • 「上」(デフォルト)、
    • "下"
    • "中心"
    • 「センターホール」

出力:

Box ドットでプロットする

コントロールの美学 Box プロット

ボックスの色を変更する

グループの色を変更できます。

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

コードの説明

  • グループの色はaes()マッピングで制御されます。color=Monthを使用すると、月に応じてボックスとウィスカーのプロットの色を変更できます。

出力:

の色を変更します Box

Box 複数のグループを含むプロット

複数のグループを追加することも可能です。 測定日による空気質の違いを可視化できます。

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

コードの説明

  • 幾何学オブジェクトの aes() マッピングは、表示するグループを制御します (この変数は係数である必要があります)
  • aes(fill= day_cat) は、x軸の各月ごとに3つのボックスを作成できます。

出力:

Box 複数のグループを使用したプロット

Box ジッタードットのあるプロット

ドットを表示する別の方法は、ジッタ ポイントを使用することです。これは、R 変数のカテゴリ データのボックス プロットを使用してポイントを視覚化する便利な方法です。

この方法により、離散データの重複が回避されます。

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

コードの説明

  • geom_jitter() は、各ポイントに少しの減衰を追加します。
  • shape=15は点の形状を変更します。15は正方形を表します
  • color = “steelblue”: ポイントの色を変更します
  • Position=position_jitter(width = 0.21): 重なるポイントの配置方法。 Position_jitter(width = 0.21) は、ポイントを X 軸から 20 パーセント移動することを意味します。 デフォルトでは 40 パーセントです。

出力:

Box ジッタードットのあるプロット

ジッター法を使用した最初のグラフとポイント法を使用した XNUMX 番目のグラフの違いがわかります。

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box ジッタードットのあるプロット

切り欠かれた Box プロット

geom_boxplot() の興味深い機能は、R のノッチ付きボックス プロット関数です。ノッチ プロットは、中央値の周囲のボックスを狭めます。ノッチ付きボックス プロットの主な目的は、グループ間の中央値の有意性を比較することです。ノッチが重ならない場合は、2 つのグループの中央値が異なるという強い証拠があります。ノッチは次のように計算されます。

切り欠かれた Box プロット

with は四分位と観測値の数です。

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

コードの説明

  • geom_boxplot(notch=TRUE): ノッチ付き水平ボックスプロットを作成する R

出力:

切り欠かれた Box プロット

まとめ

水平ボックスプロット R のさまざまなタイプを次の表にまとめます。

DevOps Tools Engineer試験のObjective Code
基本的なボックスプロット
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
横をひっくり返す
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
ノッチ付きボックスプロット
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box ジッターしたドットを含むプロット
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

また、チェックしてください:- 初心者向け R チュートリアル: R プログラミング言語を学ぶ