在R中,如何创建等高线图,其中线条表示高程,颜色表示单独值的大小?

时间:2014-10-30 03:49:07

标签: r data-visualization

我的具体例子:我有一个数据框,比如'df',包含x坐标,y坐标,高程的列,我有一个与x / y坐标相关的降水值矢量(比如变量名是' PREC')。

我可以用:

创建一个3d表示
myColorRamp <- function(colors, values) {
v <- (values - min(values))/diff(range(values))
x <- colorRamp(colors)(v)
rgb(x[,1], x[,2], x[,3], maxColorValue = 255)
}
library(rgl)
cols <- myColorRamp(c("red", "white", "blue"), prec)
plot3d(df$xcoord, df$ycoord, df$Elev, type="p", size=3, xlab='x', ylab='y', zlab='elevation', col = cols)

我希望基本上有相同图片的二维表示,而不是三维图,使用等高线表示第三维高程。

即:我想要一个等高线图: http://mathworld.wolfram.com/images/eps-gif/ContourPlot_1000.gif 但是不是指示高程大小的颜色,而是希望它表示降水量。

我看过https://stats.stackexchange.com/questions/31726/scatterplot-with-contour-heat-overlayR: Scatterplot with too many points,但它们似乎不适用于这个特定的问题而且我正在努力应对http://stat.ethz.ch/R-manual/R-patched/library/graphics/html/filled.contour.html中给出的示例,因为我的z值是一个向量,而不是一个矩阵。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要先将df$xcoorddf$ycoorddf$Elev向量转换为matrix

基本上创建一个网格,并用向量中的点填充它。网格的某些点将保持NA,但这应该有效。

另见this existing stackoverflow question
编辑:所有信息也可用in this existing stackoverflow question