我正在尝试在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函数中绘制这些线?否则,线条无法正确绘制到主图像上,因为图形的比例/图例位于右侧。
谢谢!
答案 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
语句! :)
希望这有帮助