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() を使用してボックスプロットを作成します。
出力:
グラフの側面を変更する
グラフの側面を反転できます。
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 プロット
ボックスの色を変更する
グループの色を変更できます。
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
コードの説明
- グループの色はaes()マッピングで制御されます。color=Monthを使用すると、月に応じてボックスとウィスカーのプロットの色を変更できます。
出力:
Box 複数のグループを含むプロット
複数のグループを追加することも可能です。 測定日による空気質の違いを可視化できます。
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
コードの説明
- 幾何学オブジェクトの aes() マッピングは、表示するグループを制御します (この変数は係数である必要があります)
- aes(fill= day_cat) は、x軸の各月ごとに3つのボックスを作成できます。
出力:
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 パーセントです。
出力:
ジッター法を使用した最初のグラフとポイント法を使用した XNUMX 番目のグラフの違いがわかります。
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
切り欠かれた Box プロット
geom_boxplot() の興味深い機能は、R のノッチ付きボックス プロット関数です。ノッチ プロットは、中央値の周囲のボックスを狭めます。ノッチ付きボックス プロットの主な目的は、グループ間の中央値の有意性を比較することです。ノッチが重ならない場合は、2 つのグループの中央値が異なるという強い証拠があります。ノッチは次のように計算されます。
with は四分位と観測値の数です。
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
コードの説明
- geom_boxplot(notch=TRUE): ノッチ付き水平ボックスプロットを作成する R
出力:
まとめ
水平ボックスプロット 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 プログラミング言語を学ぶ