生物学となんとか 〜理系大学生の日常

理系大学生が生物学について綴る日記。レポートを書く人と自分のために。。。

生産構造図の書き方

 

3連投です!!!

 

以前、「植物呼吸量」というレポートの中で、生産構造図を作成しましたが、この図は本来、手書きで良いものでした。しかし、手書きの図がジャーナルに載っていることは通常ないので、なんとかしてパソコン上でかけないかと色々調べた結果、Rというソフトを用いて描く方法を発見しました。しかしながら、そのサイトで紹介されていた実験手法と、自分たちが行なった実験手法が異なっていたことや、そのサイトがしばらく更新されていなかったことなどが災いして、かなり苦労しました。そこで今回は、自分が作成した生産構造図を作る方法を紹介したいと思います!

なお、この方法は以下のサイトに大きく基づいています。

sonamthashi.blog.fc2.com

 

まず、前準備としてRが作業するディレクトリを指定する必要があります。これをしないと、何か指示をしても、どの場所にあるファイルを使っていいかわからず、迷子になってしまいます。

次の画像のようにリムーバブルディスクEの中にあるRというファイルを指定したければ、" setwd("E:R") "と入力してエンターを押します。

 

次に、取れたデータから、data_DWとdata_lightを作成します。この時点ではエクセルで大丈夫です。data_DWではA列に光合成器官乾燥重量、B列に非光合成器官乾燥重量、data_lightではA列に高さの区切り(自分たちは7cm区切りでした)、B列に各高さの相対照度を入力します。

 

これができたら、このエクセルファイルをタブ区切り(.txt)のファイルに変えます。これは、エクセル上で簡単に行うことができ、「名前をつけて保存」のところで、名前をいじらずに、ファイルの種類をこの形にしてあげればOKです。

 

ここまでできたら前準備は終了です。次にRでこの文章を打ち込んでください。



##################
### initial setting ###
##################
par(oma =c(1,5,1,5)) #デバイス領域内で,作図領域の外に余白をとる.
par(mfrow=c(1,2)) #画面1行2列に分割する。
par(mar =c(5,0,5,0)) #複数の図間の余白を設定
par(mgp=c(1.0,0.1,0)) #軸からラベル、軸から目盛、軸から軸線までのマージンを設定
par(mgp = c(3, 1.2, 0)) #余白の使い方.説明,ラベル,軸の位置を行で指定.
par(family="Helvetica")

####################
###data preparation ###
####################
H <- 49#群落の一番高いところを指定する。

data_DW <- read.table("data_DW.txt", header=TRUE, row.names=NULL, sep="\t") #DWのCSVファイルを読み込む
data_light <- read.table("data_light.txt", header=TRUE, row.names=NULL, sep="\t")#相対照度のCSVファイルを読み込む

data_a <- data_DW[,1] #葉身の乾物データ
data_b <- data_DW[,2] #茎及び葉鞘の乾物データ
hight_light<-data_light[,1] #相対照度の高さ
light <- data_light[,2] #相対照度

result <- nls(hight_light ~ a + b*light^3 + c*log(light), start=list( a=0.1, b=0.1, c=0.1 )) #x^3 + log(x)による非線形の近似曲線
summary(result)
par <- result$m$getPars() #resultのmに格納されているa,b,cの係数を呼び出す

##########################
###start plotting (left side) ###
##########################
barplot(data_a, xlab = expression(paste("photosynthetic organ[g DW]")),horiz=T, space=0, names.arg=hight,xlim=c(max(data_a)+0.5,0),axisnames=F, col="green") #axisnames=Fでy軸ラベルを削除

par(new=T); #グラフを重ね合わせます
plot(light, hight_light,ylim=c(0,H), xlim=c(1,100),xlab="",ylab="",axes=F, pch=1,ann=F) #相対照度のグラフを描きます

mtext("relative light intensity[%]",side=3,line=3) #2個目のx軸の名前を表示、sideは方向でaxisと同じ、lineは軸と""内の文字の間隔
mtext("hight [cm]",side=2,line=3) #y軸の名前を表示、sideは方向でaxisと同じ、lineは軸と""内の文字の間隔.lasは文字の向きを指定。

axis(3, las=1)#y軸目盛を縦書き
axis(2, las=2)#y軸目盛を縦書き

result #ちゃんと回帰式が乗っているか確認のため
par(new=T); #グラフを重ね合わせます

box() #各座標軸の付け根を閉じます

###########################
###start plotting (right side) ###
###########################
barplot(data_b, xlab = expression(paste("nonphotosynthetic organ[g DW]")), horiz=T, space=0, names.arg=hight, xlim=c(0,max(data_b)+0.5), axisnames=F) #非同化組織の棒グラフ導入

このプログラムの一つ一つで何を行なっているかを完全に説明することは、私にはできませんm(_ _)m

しかし、先ほどのサイトを元に、近似曲線を取り除き、非同化組織の区分わけを無くしたのが、だいたいこのプログラムだと考えています(もしかしたら過剰な部分があるかもしれませんが。。。)

このようにすると、次の生産構造図が出力されると思います。自分たちの実験結果で近似曲線を表そうとしたのですが、変な曲線になってしまったので、取り除きました。これは多分、実験を行った日が曇りで、太陽が出たり隠れたりして、照度がうまく取れなかったからだと思います。どうしても近似曲線を出したい方は、前述のリンクから頑張って見てください笑

 

f:id:k-ishikawa-science:20170801234140p:plain

 

Rは統計処理にも使えるソフトです。決してわかりやすいとは思いませんし、自分はまだできませんが、プログラムをカチャカチャっと書いて、統計処理なりなんなりをスパッとできたらめちゃくちゃかっこいいですね~(^^)

いつかは勉強してできるようになりたいです。無料なのも強みです!

 

 

ではでは〜