R:在fill.contour图上绘制散点图

时间:2015-01-31 23:02:53

标签: r plot

我是R的新手,并使用内插数据(如Plotting contours on an irregular grid中的数据)创建了一个fill.contour图。使用Plotting contours on an irregular grid中的一些样本数据,我使用以下代码制作了一个fill.contour和简单的散点图

x <- datr$Lat
y <- datr$Lon
z <- datr$Rain

require(akima)
fld <- interp(x,y,z)
filled.contour(fld)
plot(x,y)

有没有办法在同一个图(重叠)上制作图(x,y)和filled.contour(fld)?我尝试了点(x,y),但这与x和y轴不匹配。在Matlab中,我相信我会坚持这样做,但我不确定如何在R上执行此操作。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用参数plot.titleplot.axes

x <- 10*1:nrow(volcano)
y <- 10*1:ncol(volcano)
filled.contour(x, y, volcano, plot.title = { 
  points(x = 200, y = 200)
})

via

答案 1 :(得分:0)

一种方法是读取filled.contour的代码,然后执行 像这样的小黑客:

制作你的身材:

filled.contour(fld)

通过从参数列表中复制它们来定义这些常量。

nlevels = 20
zlim = range(z, finite = TRUE)
las = 1 
levels = pretty(zlim, nlevels)
xlim = range(x, finite = TRUE)
ylim = range(y, finite = TRUE)
xaxs = "i"
yaxs = "i"
asp = NA

通过复制函数体中的代码

来计算这些值
mar.orig <- (par.orig <- par(c("mar", "las", "mfrow")))$mar
w <- (3 + mar.orig[2L]) * par("csi") * 2.54

通过复制功能正文中的代码来设置布局

layout(matrix(c(2, 1), ncol = 2L), widths = c(1, lcm(w)))

请注意,该图实际上是在色标后绘制的, 但是我们不想改变布局的顺序,因为layout 实际上设置了当前的&#39;区域作为最后一个区域因为 第一次调用plot.new将导致当前区域回绕 到第一个地区。因此,当您设置绘图窗口并通过以下方式绘制点:

plot.window(ylim=ylim,xlim=xlim)
points(x,y)
title(main='title',
      sub='Sub-Title',
      xlab='This is the x axis',
      ylab='This is the y axis')

他们根据需要叠加图形。