- 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_*
の関係が詳しくまとめられています