2

我是 R 绘图的新手,我希望为多个文件绘制等高线图。这就是我到目前为止所得到的。我的文件有 3 列,X、Y、Z,并带有一些 nan 值。由于 lattice 不允许 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' 值应该在所有三个上都是相似的颜色。

我对 gnuplot 更熟悉,但问题也在于范围,因为范围总是自动缩放到颜色,而且似乎很难控制范围。对此的任何帮助也深表感谢。
我可能做错了什么,所以如果有人可以帮助我,并提供正确的方向或正确的软件,我将不胜感激。

4

1 回答 1

0

这里有关于如何在 gnuplot 中制作轮廓的演示。您是否有麻烦,因为您有代码可以制作等高线图但它不起作用?

要回答您的第二个问题,在 gnuplot 中您可能想要的命令是

set cbrange [CB_MIN:CB_MAX]

这设置了将根据当前调色板着色的值范围。您只需set cbrange为您正在制作的所有三个地块发出相同的命令。如果要自动将所有文件的 cbrange 设置为 min/max,可以使用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]
于 2012-10-26T16:22:19.930 回答