- geom_histogram( )を使ってヒストグラムを描く
- geom_area( )を使って面グラフを描く
- geom_freqplot( )を使って折れ線グラフを描く
- geom_density( )を使って密度プロットを描く
- stat_bin( )との対応しているgeom_*関数
- おわりに
- 参考資料
ggplot2パッケージ(tidyverseパッケージに含まれている)のdiamondsデータを使う。
> library(tidyverse) > head(diamonds) # A tibble: 6 x 10 carat cut color clarity depth table price x y z <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> 1 0.31 Good E SI1 63.3 55 544 4.33 4.36 2.75 2 0.8 Very Good H VS2 59.1 59 2953 6.02 6.07 3.57 3 0.78 Very Good H VS1 61.9 57.1 2854 5.87 5.95 3.66 4 0.3 Ideal G VVS2 61.5 57 684 4.29 4.33 2.65 5 1.5 Good F SI2 59.7 61 8181 7.39 7.44 4.43 6 1.2 Very Good E SI2 61.4 58 6130 6.81 6.88 4.2
carat:重さ(カラット)cut:カットの質(5段階)color:色(7段階)clarity:透明度(8段階)depth:table:最も幅広い部分に対する最上部の幅price:値段(USD)x,y,z:それぞれ長さ・幅・高さ(mm)
カラット(carat)は連続変数なので、頻度分布を図示する場合はいくつかの階級(bin)に分ける必要がある。
geom_histogram( )を使ってヒストグラムを描く
binsで階級数を、binwidthで階級幅を指定できる。
デフォルトはbins=30。
ggplot(data = diamonds, aes(x = carat)) + geom_histogram(binwidth = 0.1, fill = "navy", alpha=0.5)
色や線種で指定できるものは以下のとおり。
fill:棒を塗りつぶす色alpha:棒の透過性。0(完全透明)から1(完全不透明)の間で指定。colour:棒の枠線の色linetype:棒の枠線の種類size:棒の枠線の太さ
※ 線については以前まとめた記事があります(2022-07-17 追加)

geom_area( )を使って面グラフを描く
面グラフは折れ線グラフの下を塗りつぶしたもの。
geom_area()を使うときは集計方法としてstat="bin"を指定する必要がある(geom_*とstat_*の関係性は後述)。
他の引数はgeom_histogram()を参照。
ggplot(data = diamonds, aes(x = carat)) + geom_area(stat = "bin", bins = 50, fill = "deeppink", alpha=0.5)

geom_freqplot( )を使って折れ線グラフを描く
面グラフの折れ線部分のみ。
指定する引数はbins, binwidth, colour, linetype, sizeなど。
ggplot(data = diamonds, aes(x = carat)) + geom_freqpoly()
図も省略。
geom_density( )を使って密度プロットを描く
colour, linetype, sizeで線の色などを指定できる(linetype=0あるいはsize=0とすると線は描かない)。
fill, alphaを指定して線の下を塗りつぶすことができる。
ggplot(data = diamonds, aes(x = carat)) + geom_density(linetype = 0, fill = "seagreen", alpha=0.5)

stat_bin( )との対応しているgeom_*関数
「データの集計方法」と「グラフの形状」は密接に関連していて、前者はstat_*()というレイヤーで、後者はgeom_*()というレイヤーで指定する。
どちらをメインで使ってもいい。他方はメインで使うレイヤーの引数に指定する。
例えば次の2つのコードは同じ意味になる。
geom_area(stat = "bin") stat_bin(geom = "area")
ちなみにgeom_area()ではデフォルトstat_bin()ではないので、geom_area(stat="bin")と指定しないとエラーが出る。
連続変数を階級に分けるとき(stat_bin())に使用できるグラフの形状(geom=で指定できるもの)は次のようなものがある。
"bar":ヒストグラムを描く("histogram"`と指定するわけではないみたい)。"step":ヒストグラムの枠線だけ"area":面グラフ。geom_area()に相当。"line":面グラフの折線部分のみ。geom_freqpoly()に相当。"point":点のみ"text":点の代わりに文字を書く
おわりに
- 基本的に連続変数はbinを設定して集計・表示する。densityはbinを極限に小さくしたとイメージして理解する。
参考資料
- 本家ページ:
geom_*とstat_*の関係が詳しくまとめられています