Rでヒストグラムを書く(階級幅指定など)

こんてんつ

Rでヒストグラムを書く方法を示す。Rの標準の書き方と、ggplotパッケージを用いた書き方を示す。

使用するデータ

架空の中学生の身長のデータ("histsample.dat")があるとする。

"histsample.dat" (文末に200行分のデータ有り)

1人目 166
2人目 171
3人目 162
4人目 164
5人目 163
…
119人目   170
120人目   155

R標準機能でのプロット

コード

dat<-read.table("histsample.dat",sep="\t",header=F,fileEncoding="utf-8")
hist(dat[,2], breaks=seq(140,190,by=5), ylim=c(0,60), main="タイトル", xlab="横軸ラベル", ylab="縦軸ラベル", col="#993435")
hist(dat[,2], binwidth=5, ylim=c(0,60), main="タイトル", xlab="横軸ラベル", ylab="縦軸ラベル", col="#993435")

出力結果

f:id:norunblog:20210612212038p:plain

解説

breaks=seq(140,190,by=5)が、「140cm~190cmの範囲を5cm刻みでヒストグラムに分けよ」という意味。ylim=c(0,60)は「Y軸の範囲を0~60にしなさい」という意味。

ggplotパッケージを用いたプロット

コード

library(ggplot2)

dat<-read.table("histsample.dat",sep="\t",header=F,fileEncoding="utf-8")
colnames(dat) <- c("human","height")

ggplot(dat, aes(x=height)) +
  geom_histogram(breaks=seq(140,190,by=5), fill="orange", colour="blue") + 
  scale_y_continuous(breaks=seq(0,60,by=10),limits=c(0,60))

出力結果

f:id:norunblog:20210612222100p:plain

アレンジ例

ggplot(dat, aes(x=height)) + geom_histogram(bins=10)
ggplot(dat, aes(x=height)) + geom_histogram(binwidth=2)

使用データ

1人目  166
2人目 171
3人目 162
4人目 164
5人目 163
6人目 168
7人目 165
8人目 159
9人目 168
10人目    164
11人目    165
12人目    151
13人目    167
14人目    164
15人目    183
16人目    159
17人目    161
18人目    162
19人目    157
20人目    172
21人目    165
22人目    164
23人目    154
24人目    160
25人目    153
26人目    165
27人目    167
28人目    160
29人目    153
30人目    179
31人目    174
32人目    153
33人目    161
34人目    168
35人目    175
36人目    150
37人目    157
38人目    155
39人目    166
40人目    156
41人目    155
42人目    161
43人目    170
44人目    171
45人目    149
46人目    169
47人目    170
48人目    180
49人目    173
50人目    172
51人目    156
52人目    157
53人目    157
54人目    159
55人目    159
56人目    159
57人目    160
58人目    160
59人目    161
60人目    161
61人目    161
62人目    162
63人目    162
64人目    163
65人目    164
66人目    164
67人目    164
68人目    164
69人目    165
70人目    165
71人目    165
72人目    165
73人目    166
74人目    160
75人目    160
76人目    161
77人目    163
78人目    160
79人目    161
80人目    163
81人目    161
82人目    165
83人目    163
84人目    163
85人目    163
86人目    164
87人目    166
88人目    166
89人目    168
90人目    168
91人目    165
92人目    169
93人目    169
94人目    168
95人目    166
96人目    167
97人目    159
98人目    161
99人目    160
100人目   160
101人目   162
102人目   162
103人目   161
104人目   161
105人目   163
106人目   164
107人目   163
108人目   163
109人目   163
110人目   165
111人目   167
112人目   166
113人目   165
114人目   165
115人目   167
116人目   167
117人目   169
118人目   169
119人目   170
120人目   155