在R中的filled.contour图中绘制一个方框?

时间:2010-08-20 08:15:17

标签: r

我正在尝试在fill.contour绘图中绘制一个方框,但不幸的是,当我在fill.contour绘图创建后绘制直线()时,图形向右移动,因为刻度强制图像在左边,但框保持在相同的坐标。这是我的代码的样子:

dev.new(width=6,height=7)
mypredict<-matrix(data=mypredict,nrow=20,ncol=25)
filled.contour(x=seq(from=-1.5,to=1.5,length=20),
y=seq(from=1,to=3.75,length=25),
z=mypredict,
col=hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1)
)
top <- 3.42
bot <- 1.56
lines(c(-1,-1),c(bot,top))
lines(c(1,1),c(bot,top))
lines(c(-1,1),c(top,top))
lines(c(-1,1),c(bot,bot))

有谁知道如何在filled.contour函数中绘制这些线?否则,线条无法正确绘制到主图像上,因为图形的比例/图例位于右侧。

谢谢!

1 个答案:

答案 0 :(得分:6)

filled.contour的手册页解释了问题(并提供了解决方案)

  

此功能目前使用'布局'功能,因此受到限制   到整页显示。作为替代方案,考虑'levelplot'   和'contourplot'函数来自'lattice'包中的工作   多面板显示器。

     

'filled.contour'产生的输出实际上是一个组合   两个地块; 一个是填充的轮廓,一个是图例。   为这两个图设置了两个独立的坐标系   但它们仅在内部使用 - 一旦函数返回   这些坐标系统丢失。如果要注释   主轮廓图,例如添加点,可以指定   'plot.axes'参数中的图形命令。一个例子是   如下所示。

基本上你传递一些指令作为plot.axes参数来覆盖标准行为。

在你的例子中:

filled.contour(x = seq(from=-1.5,to=1.5,length=20),
      y = seq(from=1,to=3.75,length=25), z = mypredict,
      col = hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1),
      plot.axes = {axis(1); axis(2); rect(left, bottom, right, top);})

请注意,您必须重新创建两个轴,否则将无法绘制它们。此外,当有lines函数时,无需使用rect语句! :)

希望这有帮助