# 用R做體長頻度分布
###### tags: `用R做`,`學習筆記`
採集並量測了環文蛤與船形薄殼蛤(公代)的體長,需要繪製出兩個物種的體長頻度直方圖,並以兩個圖板呈現,程式碼如下:
```java=
library(ggplot2)
data<-as.data.frame(read.csv("2020_July.csv", header=T))
ggplot(data=data, aes(length))+
geom_histogram()+
xlab("length [mm]")+
ggtitle("Length distribution of 2020 July")+
facet_wrap(~sp)
```
<center>
<img src="https://i.imgur.com/4JUxnRL.png" width=75%>
完成圖。
</center>
摘要:
- `aes()` 指定資料來源。
- `geom_histogram()` 指定做圖類型。
- 使用 `facet_wrap()` 指令分割圖板。
若要加上中位數的線與標示值:
```java=
S<-split(data, data$sp)
str(S)
ggplot(data=S$'L. anatina', aes(length))+
geom_histogram()+
scale_x_continuous(name="length (mm)", limits=c(10, 60))+
ggtitle("Length distribution of 2020 July")+
geom_vline(aes(xintercept=median(length)),linetype='dashed',color='red', size=1)+
geom_text(aes(x=37, y=18, label = as.character(as.expression(median(length)))))
```
<center>
<img src="https://i.imgur.com/BjJj97y.png" width=75%>
加上中位數的線,且在旁標示其值。
</center>
因為沒辦法在使用同一份資料當中,按物種計算中位數後,分別加在分割的圖板上,所以只好將表格分割後,分別做圖。
摘要:
- 使用 `split()` 分割表格。
- 用 `str()` 確認表格的結構,是否依照 sp 分割表格。
- 使用 `geom_vline()` 加上垂直 x 軸的直線。
- 使用 `geom_text()` 標注文字,需要透過 `aes()` 指定位置。
- `label` 後需要加字串(character)變數,所以要用 `as.character()` 轉換。
- `as.expression()` 會將其中變數當成表達式運算後,輸出結果。
若想將 y 軸代換成百分比:
```java=
S<-split(data, data$sp)
str(S)
ggplot(data=S$`C. sinensis`, aes(width))+
geom_histogram(aes(y=..count../sum(..count..)*100))+
scale_x_continuous(name="length (mm)", limits=c(0, 50))+
scale_y_continuous(name="frequency (%)", limits=c(0, 20))+
ggtitle("Length distribution of C. sinensis 2020 July")+
geom_vline(aes(xintercept=median(width)), linetype='dashed',color='red', size=1)+
geom_text(aes(x=22, y=19, label = as.character(as.expression(median(width)))))
```
<center>
<img src="https://i.imgur.com/ekz4lzG.png" width=75%>
將 y 軸代換成百分比。
</center>
因為使用 `geom_histogram()` 畫出來的圖,y 軸僅呈現計數,無法計算比例,故需要在指令中加入處理條件。
摘要:
- `geom_histogram()` 中使用 `aes(y=..count../sum(..count..)*100)` 計算百分比。
- 加入 `scale_y_continuous()`,限制比例最大值為 20。
- 此為環文蛤(*Cyclina sinensis*)的資料。環文蛤殼寬大於殼長,故以殼寬製作體長頻度分布。
這是一開始用 R 製圖的筆記,現在看來還有一些可以讓圖更美的地方,例如加入字型、大小、置中、主題等指令。重要的是以後如果需要製作類似的圖,回頭來找到這篇,再來修改就會快上許多。
<span style="font-size:30px">🐕🦺</span> 2022.09.15