2017-03-12 5 views
0

私は4変数(3つのy軸と共通のx軸)をプロットするコードという8つの有用な変数を持つデータフレームを扱います。データフレームは、次のようになります。サブセットデータフレームを作成し、すべてのサブセットをループでプロットする[R]

It has like 6500 rows

は、私は、ファイルの列からdata.frameをサブセットし、次にy軸として、x軸と温度、RH、オゾンなどのLogPをプロットしたいです。 私はプロット関数内でサブセットを使ってみましたが、うまくいきませんでした。私は、元のファイルのいずれかでプロットが、何かアドバイスは非常に参考になりますサブセット

> plot(DataOzono$LogP, DataOzono$Temperature, axes= F,type="l",col="red", ylab = NULL, xlab = 'LogP',xaxt="n",yaxt="n") 
axis(2,ylim(c(min(DataOzono$Temperature),max(DataOzono$Temperature)), layout.widths(2))) 
mtext(text = 'T',line = 2,side = 2) 
par(new=TRUE) 
plot(DataOzono$LogP, DataOzono$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="") 
axis(4) 
mtext("RH",side=4,line=2) 
par(new=TRUE) 
plot(DataOzono$LogP, DataOzono$Ozone,type="l",col="green",xaxt="n",yaxt="n",xlab="",ylab="") 
mtext("O3",side=5,line=3) 
axis(2, line = 4) 

を含める方法がないアイデアのためにこのコードを使用していました。

+0

あなたは、サブセットとはどういう意味ですか?列ファイル内の各番号に対して1つのグラフ(3つのプロット)が必要ですか? –

+0

また、ウィンドウを使用していますか? –

+0

私は自分自身を説明していないと思う、私はデータフレームのすべてのファイルコードのそれらの変数のプロットを作成したい。チャートは、3つのy軸(1変数につき1つ)と1つのx軸のように描かれています。はい、私はウィンドウを使用しています –

答えて

1

loopにグラフをプロットする方法は次のとおりです。与えた例では、ファイル番号は1つのみです。ただし、ファイル列内のすべての番号のグラフを作成する必要があります。 Windowsでは、savePlotを使用してドライブに保存できます。私はエラーが発生しているので、私はあなたの例を単純化しました。

DataOzono <- read.table(text="pressure height Temperature RH Ozone file LogP 
753.6 2541 16.8 76 0 80131 0.3475673 
748.0 2604 17.7 32 0 80131 0.347959 
743.5 2656 15.9 38 0 80131 0.3482766 
739.8 2697 15.4 39 0 80131 0.3485396 
736.6 2734 15.0 41 0 80131 0.3487685 
731.8 2790 14.5 42 0 80131 0.3491142", header=TRUE, stringsAsFactors=FALSE) 

original_par <- par() 
par(mar=c(5.1, 8.1, 4.1, 3.1)) 

for (i in unique(DataOzono$file)){ 
DataOzono_subset <- DataOzono[DataOzono$file==i,] #keep only rows for that file number 

plot(DataOzono_subset$LogP, DataOzono_subset$Temperature, axes= F,type="l",col="red", ylab = "", xlab = 'LogP',xaxt="n",yaxt="n") 
axis(2,col="red",col.axis="red") 
mtext(text = 'T',line = 2,side = 2,col="red",col.lab="red") 
par(new=TRUE) 
plot(DataOzono_subset$LogP, DataOzono_subset$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="") 
axis(4,col="blue",col.axis="blue") 
mtext("RH",side=4,line=2,col="blue",col.lab="blue") 
par(new=TRUE) 
plot(DataOzono_subset$LogP, DataOzono_subset$Ozone,type="l",col="darkgreen",xaxt="n",yaxt="n",xlab="",ylab="") 
mtext("O3",side=2,line=6,,col="darkgreen",col.lab="darkgreen") 
axis(2, line = 4,col="darkgreen",col.axis="darkgreen") 

savePlot(filename=paste0("c:/temp/",i,".png"),type="png") 
} 

par() <- original_par #restore par to initial value. 

enter image description here

+0

これは私のすべての問題を解決してくれてありがとう、このエラーを受け取ったのはたった1つの質問です "savePlotのエラー(filename = paste0(" c:/ temp/"、i、" .png ")、type =" pkg "): は、 'windows'デバイスからコピーすることしかできません。 私の作業ディレクトリに関連付けることができます:Cではなくパーティション:E? –

+0

パス( "c:/ temp /")をコンピュータ上に既に存在するディレクトリに変更してみてください。また、プログラムがこのフォルダに書き込むことができることを確認してください。通常、c:/ tempは安全な賭けです。そのため、私はこのパスを選択しました。また、savePlotが機能しない場合は、 '?png'の例を参照してください。このためには、プロットの前にpng行を置き、ループのプロットの後にdev.off()を置く必要があります。 –

+0

savePlotがうまくいかない理由を理解できませんでした。代わりにpng関数を使用しました。 –

関連する問題