在R或gnuplot中绘制具有相似比例的不同等高线图

时间:2012-10-26 15:45:25

标签: r gnuplot contour

我是R的新绘图,我希望为几个文件做等高线图。这是我到目前为止所得到的。我的文件有3列,X,Y,Z,并带有一些nan值。由于格子不允许Inf / NaN值,我不得不先删除它们,然后进行插值。

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”值应该是所有三个上的相似颜色。
  3. 我对gnuplot比较熟悉,但问题在于范围,因为范围总是自动缩放到颜色,并且似乎很难控制范围。对此的任何帮助也深表赞赏 我可能做错了什么,所以万一有人可以帮助我,并提供正确的方向或正确的软件,我将不胜感激。

1 个答案:

答案 0 :(得分: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]