[英]Plotting a box within filled.contour plots in R?
我正在尝试在filled.contour绘图中绘制一个框,但不幸的是,当我在fill.contour绘图创建后绘制lines()时,图形向右移动,因为刻度强制图像向左,但盒子保持在相同的坐标。 这是我的代码的样子:
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函数中绘制这些线? 否则,线条无法正确绘制到主图像上,因为图形的比例/图例位于右侧。
谢谢!
filled.contour
的手册页解释了问题(并给出了解决方案)
此功能目前使用“布局”功能,因此仅限于整页显示。 作为替代方案,请考虑“晶格”包中的“levelplot”和“contourplot”函数,这些函数适用于多面板显示。
'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);})
请注意,您必须重新创建两个轴,否则将不会绘制它们。 另外,当有rect
函数时,不需要使用lines
语句! :)
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.