7.3 Barplot
棒グラフは質的変数の値をカウントした結果を量的に可視化する手法である.
円グラフ,ドーナッツグラフもどうようだが可視化のためにはまず集計をする必要がある.
例えば30人に出身地を聞いたところTokyo, Osaka, Hokkaido, Fukuoka
のいずれかで以下のような回答を得られたとする.
set.seed(10)
<- sample(c("Tokyo", "Osaka", "Hokkaido", "Fukuoka"), replace = T, size = 30)
x print(x)
## [1] "Hokkaido" "Tokyo" "Osaka" "Fukuoka" "Fukuoka"
## [6] "Hokkaido" "Fukuoka" "Osaka" "Hokkaido" "Hokkaido"
## [11] "Hokkaido" "Fukuoka" "Hokkaido" "Hokkaido" "Osaka"
## [16] "Hokkaido" "Osaka" "Osaka" "Fukuoka" "Tokyo"
## [21] "Hokkaido" "Fukuoka" "Osaka" "Hokkaido" "Osaka"
## [26] "Hokkaido" "Hokkaido" "Osaka" "Osaka" "Tokyo"
次に可視化のために,それぞれの回答がいくつあったかを集計する必要がある.Rではtable()
という関数を利用すると簡単に集計ができる.
<- table(x)
smry print(smry)
## x
## Fukuoka Hokkaido Osaka Tokyo
## 6 12 9 3
最後にbarplot()
という関数にこの結果を渡すことで棒グラフを作成することができる.
barplot(smry)
棒を縦ではなく横に伸ばしたい場合はhoriz=TRUE
と指定すると良い.
barplot(smry, horiz = TRUE, las=1, cex.names=0.8)
棒グラフをggplotのライブラリを利用して作成する場合は次のように実装できる.
ggplot
では引数として渡すデータをデータフレームとして整形する必要があるので,少し慣れが必要である.
以下では2つの処理を実装している.
smry
をデータフレームに変換x
となっている列名をそれぞれcity_name
に変更
<- as.data.frame(x) # データフレームに変換
df <- df %>% rename(city_name = x)
df %>% head() df
## city_name
## 1 Hokkaido
## 2 Tokyo
## 3 Osaka
## 4 Fukuoka
## 5 Fukuoka
## 6 Hokkaido
次にggplot
のライブラリでの実装を示す.
ggplot(df) +
geom_bar(aes(x=city_name), position = "identity")
先ほどと同様,棒を横に伸ばすこともできる.その場合,引数を追加するのではなく,coord_flip()
という関数を足すことで実現できる.
ggplot(df) +
geom_bar(aes(x=city_name), position="identity") +
coord_flip()
Exercise 7.1 (棒グラフの作成) 以下のコードを実行して,仮想的なアイスの好きな味のアンケート結果のベクトルquiestionaire
を作成しなさい.
set.seed(10)
<- c("vanilla", "strowberry", "chocolate", "cheese", "maccha", "milk")
choices <- sample(choices, replace=TRUE, size=40) questionaire
次に,このベクトルを利用して棒グラフを作成しなさい.
利用するライブラリは標準でもggplot
でも良い,また縦横についても特段の指定はしない.