R の棒グラフとヒストグラム (例付き)
棒グラフは、X 軸にカテゴリ変数を表示するのに最適な方法です。 このタイプのグラフは、y 軸の XNUMX つの側面を示します。
- 最初のものは、グループ間の出現数をカウントします。
- XNUMX 番目の図は、y 軸の変数の要約統計量 (最小値、最大値、平均値など) を示しています。
次の変数を持つ mtcars データセットを使用します。
- cyl: 車のシリンダー番号。 数値変数
- am: トランスミッションのタイプ。0 は自動、1 は手動。数値変数
- mpg: ガロンあたりのマイル数。 数値変数
棒グラフの作成方法
グラフを作成するには R、すぐに公開できるグラフを作成するライブラリ ggplot を使用できます。 このライブラリの基本的な構文は次のとおりです。
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
このチュートリアルでは、棒グラフを作成する幾何学オブジェクト geom_bar() に興味を持ちます。
棒グラフ: カウント
最初のグラフは、geom_bar() を使用した円柱の周波数を示しています。 以下のコードは最も基本的な構文です。
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
コードの説明
- データセット mtcars を ggplot に渡します。
- aes() 引数内に、x 軸を因子変数 (cyl) として追加します。
- + 記号は、R にコードの読み取りを継続させることを意味します。コードを分割することで、コードが読みやすくなります。
- 幾何学オブジェクトには geom_bar() を使用します。
出力:
注意: 変数を必ず因子に変換してください。そうしないと、R は変数を数値として扱います。以下の例を参照してください。
グラフをカスタマイズする
グラフをカスタマイズするために XNUMX つの引数を渡すことができます。
- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"` - `alpha`: Control density of the color - `fill`: Change the color of the bar - `size`: Control the size the bar
バーの色を変更する
バーの色を変更できます。 バーの色はすべて似ていることに注意してください。
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
コードの説明
- バーの色は、幾何学オブジェクト内の (つまり、ggplot() 内ではなく) aes() マッピングによって制御されます。 fill 引数を使用して色を変更できます。 ここでコーラルの色を選択します。
出力:
このコードを使用できます。
grDevices::colors()
R で利用可能なすべての色を確認するには、約 650 色があります。
強度を変更する
バーの色の強度を増減できます。
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
コードの説明
- バーの強度を増減するには、アルファの値を変更します。 アルファが大きいと強度が増加し、アルファが低いと強度が減少します。 alpha の範囲は 0 ~ 1 です。1 の場合、色はパレットと同じです。 0の場合、色は白です。 アルファ = 0.1 を選択します。
出力:
グループごとに色分け
バーの色を変更できます。つまり、グループごとに XNUMX つの異なる色が表示されます。 たとえば、cyl 変数には XNUMX つのレベルがあるため、XNUMX つの色で棒グラフをプロットできます。
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
コードの説明
- aes() 内の引数 fill を使用すると、バーの色を変更できます。 fill = x-axis 変数を設定することで色を変更します。 この例では、x 軸の変数は cyl です。 fill = 係数(cyl)
出力:
バーにグループを追加する
別の要因レベルに基づいて、Y 軸をさらに分割できます。たとえば、シリンダーの種類に基づいて、オートマチック トランスミッションとマニュアル トランスミッションの数をカウントできます。
次のように進めます。
- ステップ 1: mtcars データセットを使用してデータ フレームを作成する
- ステップ 2: am 変数に、自動変速機の場合は auto、手動変速機の場合は man というラベルを付けます。am と cyl を係数として変換して、ggplot() 関数で factor() を使用する必要がないようにします。
- ステップ3: シリンダーごとのトランスミッションの数を数える棒グラフをプロットする
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
データセットの準備ができたら、グラフをプロットできます。
# ステップ3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
コードの説明
- ggpplot() にはデータセット データと aes() が含まれています。
- aes() には、変数 x-axis と、バーを埋めるためにどの変数が必要か (つまり am) を含めます。
- geom_bar(): 棒グラフを作成します。
出力:
マッピングにより、バーがレベルごとに XNUMX つずつ、XNUMX つの色で塗りつぶされます。 データセット内の他の因子変数を選択することで、グループを簡単に変更できます。
パーセントで表した棒グラフ
生の数の代わりにバーをパーセンテージで視覚化できます。
# パーセント単位の棒グラフ
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
コードの説明
- geom_bar() 引数でposition = “fill”を使用して、Y軸にパーセンテージを含むグラフィックを作成します。
出力:
サイド・バイ・サイド・バー
グループ変数を並べて棒グラフをプロットするのは簡単です。
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
コードの説明
- Position=position_dodge(): バーの配置方法を明示的に指示します。
出力:
ヒストグラム
棒グラフ チュートリアルの XNUMX 番目の部分では、変数のグループを Y 軸の値で表すことができます。
目的は、シリンダーの種類ごとにガロンあたりの平均マイル数のグラフを作成することです。 有益なグラフを描画するには、次の手順に従います。
- ステップ 1: シリンダーごとのガロンあたりの平均マイル数を含む新しい変数を作成する
- ステップ 2: 基本的なヒストグラムを作成する
- ステップ 3: 向きを変更する
- ステップ 4: 色を変更する
- ステップ5: サイズを変更する
- ステップ 6: グラフにラベルを追加する
ステップ1) 新しい変数を作成します
data_histogram という名前のデータ フレームを作成します。これは、単純に車のシリンダー数によるガロンあたりの平均マイル数を返します。 この新しい変数を means_mpg と呼び、平均値を小数点以下 XNUMX 桁で四捨五入します。
# ステップ1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
ステップ2) 基本的なヒストグラムを作成する
ヒストグラムをプロットできます。 クライアントに届けるためのコミュニケーションの準備は整っていませんが、トレンドについての直感は得られます。
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
コードの説明
- aes() には XNUMX つの変数が含まれるようになりました。 cyl 変数は x 軸を指し、mean_mpg は y 軸を指します。
- Y 軸の変数を数値として参照するには、引数 stat=”identity” を渡す必要があります。 geom_bar はデフォルト値として stat=”bin” を使用します。
出力:
ステップ3) 向きを変える
グラフの方向を垂直から水平に変更します。
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
コードの説明
- coord_flip() を使用してグラフの方向を制御できます。
出力:
ステップ4) 色を変える
X 軸変数の因子水準に応じてバーの色を区別できます。
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
コードの説明
- fill= cyl マッピングを使用して、グループごとにグラフをプロットできます。 R は、cyl 変数のレベルに基づいて自動的に色を処理します。
出力:
ステップ5) サイズを変更
グラフをより美しくするには、バーの幅を小さくします。
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
コードの説明
- geom_bar() 内の width 引数はバーのサイズを制御します。 値を大きくすると幅が広くなります。
- グラフは変数グラフに保存することに注意してください。 これを行うのは、次のステップでは変数グラフのコードを変更しないためです。 コードの可読性が向上します。
出力:
ステップ6) グラフにラベルを追加する
最後のステップでは、変数mean_mpgの値をラベルに追加します。
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
コードの説明
- 関数 geom_text() は、テキストの美しさを制御するのに役立ちます。
- label=: バーの内側にラベルを追加します
- means_mpg: ラベルに変数mean_mpgを使用します
- hjust はラベルの位置を制御します。 1 に近い値ではラベルがバーの上部に表示され、より高い値ではラベルが下部に表示されます。 グラフの方向が垂直の場合は、hjust を vjust に変更します。
- color=”white”: 文字の色を変更します。 ここでは白色を使用します。
- size=3: 文字のサイズを設定します。
出力:
まとめ
棒グラフは、x 軸がカテゴリ変数である場合に便利です。y 軸は、カウントまたは要約統計のいずれかになります。次の表は、ggplot2 を使用して棒グラフを制御する方法をまとめたものです。
DevOps Tools Engineer試験のObjective | Code |
---|---|
ワンランク上の |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
塗りつぶしの色を変えてカウントする |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
グループごとにカウント (積み上げ) |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
グループで並べて数える |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
グループごとのカウント (% 単位で積み上げ) |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
価値観 |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |