# 用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