Symfoware

Symfowareについての考察blog

R言語 ggplot2 棒グラフを描画する(geom_bar)

ggplot2で、棒グラフを描画する方法メモ。
Bars, rectangles with bases on x-axis


使用するデータは、ggplot2に同梱されている「mtcars」です。


> head(mtcars)
                 mpg cyl disp hp drat    wt qsec vs am gear carb
Mazda RX4         21.0 6 160 110 3.90 2.620 16.46 0 1    4    4
Mazda RX4 Wag     21.0 6 160 110 3.90 2.875 17.02 0 1    4    4
Datsun 710        22.8 4 108 93 3.85 2.320 18.61 1 1    4    1
Hornet 4 Drive    21.4 6 258 110 3.08 3.215 19.44 1 0    3    1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0    3    2
Valiant         18.1 6 225 105 2.76 3.460 20.22 1 0    3    1






Examples 1



シリンダーの数でグループ化し、件数を棒グラフにしてみます。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. p <- ggplot(mtcars, aes(factor(cyl)))
  7. p + geom_bar()
  8. # 出力ドライバを閉じる
  9. graphics.off()



629_01.png



棒グラフの幅はwidthで指定。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. p <- ggplot(mtcars, aes(factor(cyl)))
  7. # 幅を指定
  8. p + geom_bar(width = 0.5)
  9. # 出力ドライバを閉じる
  10. graphics.off()



629_02.png



グラフを横向きにするには、coord_flip()を追記。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. p <- ggplot(mtcars, aes(factor(cyl)))
  7. # 幅を指定
  8. p <- p + geom_bar(width = 0.5)
  9. # グラフを横向きに
  10. p + coord_flip()
  11. # 出力ドライバを閉じる
  12. graphics.off()



629_03.png



棒グラフの色は「fill」、枠線は「colour」で指定。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. p <- ggplot(mtcars, aes(factor(cyl)))
  7. # 色を指定
  8. p + geom_bar(fill="white", colour="red")
  9. # 出力ドライバを閉じる
  10. graphics.off()



629_04.png





Examples 2



qplotにgem="bar"を指定することでも棒グラフが描画できます。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. qplot(factor(cyl), data=mtcars, geom="bar")
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_05.png


fillにfacterを指定することで、適当な色をつけることが可能。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(cyl))
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_06.png



fillのfacterにはqplotのfacterと異なる系列を指定できます。
その場合は、各々の分類の中での積み上げグラフとなります。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(vs))
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_07.png




  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 400, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(gear))
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_08.png





Examples 3



ここからはggplot2に同梱されているサンプルデータ「diamonds」を使用します。


> head(diamonds)
carat     cut color clarity depth table price    x    y    z
1 0.23     Ideal     E     SI2 61.5    55 326 3.95 3.98 2.43
2 0.21 Premium     E     SI1 59.8    61 326 3.89 3.84 2.31
3 0.23     Good     E     VS1 56.9    65 327 4.05 4.07 2.31
4 0.29 Premium     I     VS2 62.4    58 334 4.20 4.23 2.63
5 0.31     Good     J     SI2 63.3    58 335 4.34 4.35 2.75
6 0.24 Very Good     J    VVS2 62.8    57 336 3.94 3.96 2.48




clarityで分類。
clarityの分類内で、cutの数で積み上げグラフ。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_09.png



横向きにするには「coord_flip()」を追加するのでした。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() + coord_flip()
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_10.png



積み上げグラフではなく、別の棒グラフに描画したい場合は、
facet_wrapを使用します。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 棒グラフを描画
  6. ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() + facet_wrap(~ cut)
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_11.png



折れ線グラフにしたい場合、geom_freqpolyを使用します。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 折れ線グラフを描画
  6. ggplot(diamonds, aes(clarity)) + geom_freqpoly(aes(group = cut, colour = cut))
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_12.png




積み上げではなく、横並びの棒グラフにしたい場合は、position="dodge"を指定。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 並べた棒グラフ
  6. ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_13.png




各系列間に隙間を開けたい場合、facet_gridを使用。


  1. # 画像ファイルへの出力ドライバを用意
  2. png("image.png", width = 500, height = 400, pointsize = 12, bg = "white")
  3. # ggplot2ライブラリをロード
  4. library(ggplot2)
  5. # 並べた棒グラフ
  6. ggplot(diamonds, aes(cut, fill=cut)) + geom_bar() + facet_grid(. ~ clarity)
  7. # 出力ドライバを閉じる
  8. graphics.off()



629_14.png




R言語 ggplot2 作成できるフラグの一覧メモ



【参考URL】

Help topics
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/07/21(火) 23:11:02|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<FreeBSD 10.1に「Elixir」をpkg installでインストールする | ホーム | R言語 ggplot2 傾きと切片を指定して、線を描画する(geom_abline)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1759-31750037
この記事にトラックバックする(FC2ブログユーザー)