2012-10-26 78 views
2

我是R新繪製的圖形,我希望爲幾個文件做輪廓圖。這是迄今爲止我所擁有的。我的文件有3列,X,Y,Z和一些nan值。由於晶格不允許Inf/NaN值,所以我必須事先刪除它們,並進行一些插值。
繪製R或gnuplot中具有類似比例的不同輪廓圖

data <- read.table("file", sep=",", header=T) 
mydata <- na.omit(data) 
library(akima) 
library(lattice) 
s = interp(mydata$X, mydata$Y, mydata$Z) 
filled.contour(s, xlim= c(5,25), ylim=c(40,180)) 

這確實給了一些成果,但有些事情我不能做:

  1. 要獲得圖形輪廓線。
  2. 另外還有3個文件有不同的z範圍,比如(0-18),(0-20),(0-25)中的一個。我希望對它們進行調整和重新縮放,以便在圖形上提供類似的色彩比例,例如,「15」值在所有三個值上應該是相似的顏色。

我對gnuplot更熟悉,但也存在範圍問題,因爲範圍始終自動調整爲顏色,並且似乎很難控制範圍。任何與此有關的幫助也深受讚賞。
我可能做錯了什麼,所以如果有人能幫助我,並提供正確的方向或正確的軟件,我將不勝感激。

回答

0

有關於如何在gnuplot中製作輪廓的演示here。你有沒有遇到麻煩,因爲你有編寫等高線圖的代碼,但它不起作用?

要回答你的第二個問題,在gnuplot的你可能要執行的命令是

set cbrange [CB_MIN:CB_MAX] 

此設置將根據當前的調色板着色值的範圍。你只需要爲你正在製作的所有三張圖發出相同的set cbrange命令。如果你想自動設置cbrange到最小/最大上的所有文件,可以使用stats命令(在4.6或更新版本,否則將會比較麻煩):

stats 'datafile1' using 3 name 'd1' 
stats 'datafile2' using 3 name 'd2' 
stats 'datafile3' using 3 name 'd3' 
datamin_z = (d1_min<d2_min&&d1_min<d3_min?d1_min:d2_min<d3_min?d2_min:d3_min) 
datamax_z = (d1_max>d2_max&&d1_max>d3_max?d1_max:d2_max>d3_max?d2_max:d3_max) 
set cbrange [datamin_z:datamax_z] 
+0

非常感謝你。 cbrange確實爲gnuplot工作。我用pm3d地圖來對我的情節進行顏色縮放。這與gnuplot一起工作得很好,我也用'cntrparam levels'獲得了一些很好的輪廓。但是gnuplot中的輪廓並不完全標定具有色階區域的區域。所以我希望去R,但是因爲我是R新手,爲Inf或NaN值爲Z值的文件生成輪廓,所以使用R對我來說似乎更麻煩。 – user1777527