#はじめに
Rstudio,ggplot2で棒グラフを書きます.
内容は主に生データからR上で平均値と標準偏差を算出するいう過程についてです.正直棒グラフならExcelでもすぐに作れますが,エラーバーの表示や統計検定の結果をグラフ中に反映させるという点ではRに軍配が上がりそうな気がします.
#生データから平均値と標準偏差を求める
irisのデータを使用していきます.ちなみにirisデータの内容はこんな感じ.3種のアヤメが50個ずつの計150行のデータです.
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species | |
---|---|---|---|---|---|
1 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
2 | 4.9 | 3 | 1.4 | 0.2 | setosa |
3 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
.. | ... | ... | ... | ... | ...... |
51 | 7 | 3.2 | 4.7 | 1.4 | versicolor |
52 | 6.4 | 3.2 | 4.5 | 1.5 | versicolor |
53 | 6.9 | 3.1 | 4.9 | 1.5 | versicolor |
.. | ... | ... | ... | ... | ...... |
101 | 6.3 | 3.3 | 6 | 2.5 | virginica |
.. | ... | ... | ... | ... | ...... |
150 | 5.9 | 3 | 5.1 | 1.8 | virginica |
ここでは便宜上変数”rawdata”にirisのデータフレームを代入しておきます.
rawdata <- iris
実際には使用したいデータのcsvを
rawdata <- read.csv("XXX.csv")
の様な感じで読み込んで使うかと思います.
棒グラフにするにあたって,平均値とエラーバーのための標準偏差が必要です.例として,Sepal.LengthのSpeciesごとの平均値と標準偏差を変数"data"に代入します.
Speciesごとにまとめるためのgroup_by, 平均値と標準偏差を算出するsummariseはdplyrパッケージに入っているので読み込んでおきましょう.
※パイプ演算子"%>%"についての説明は割愛します.
library(dplyr) #dplyrの読み込み
data <-
rawdata %>% #対象となるデータ
group_by(Species) %>% #group_byでSpeciesごとにする
summarise(mean = mean(Sepal.Length), sd = sd(Sepal.Length)) #SpeciesごとのSepal.Lengthの平均と標準偏差を求める
dataにはこのような結果が返ってきます.
Species | mean | sd | |
---|---|---|---|
1 | setosa | 5.006 | 0.352489687213451 |
2 | versicolor | 5.936 | 0.516171147063863 |
3 | virginica | 6.588 | 0.635879593274432 |
これで棒グラフが描けそうですね.
ようはExcelでaverage関数とstdev関数を使ったのと同じです.
#グラフ描画
###棒グラフ表示(geom_bar)
いよいよグラフの描画です.
ggplot2パッケージを読み込んでおきましょう.
library(ggplot2) #ggplot2の読み込み
ggplot(data, #使用するデータ
aes(y=mean, x=Species,fill=Species) #グラフのx,yの指定,fillは色の塗り分け.今回はSpeciesで塗り分けたい
)+
geom_bar(stat = "identity", width = 0.6 #geom_barで棒グラフとなる
)
こんな感じです.
デフォルトではこんな感じの色になるので任意の色への塗り替えと,エラーバーを付けていきましょう.
###エラーバー表示 (geom_errorbar)
ggplot(data, #使用するデータ
aes(y=mean,x=Species,fill=Species) #グラフのx,yの指定,fillは色の塗り分け.今回はSpeciesで塗り分けたい
)+
geom_bar(stat = "identity",
width = 0.6 #geom_barで棒グラフとなる
)+
scale_fill_manual(values = c("#999999", "darkorange", "gold") #色をRGBで設定できる
)+
geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd), # geom_errorbarでエラーバー追加
width = 0.2, # 横棒の長さ
size = 1.5 # 線の太さ
)
こんな感じです.変数"data"に代入したsdカラムの数値が反映されています.色は適当ですのでここを好みの色に変えればOK.
エラーバーの太さや横棒の長さなんかも変えられます.

※使用コード