【问题标题】:Plotting a box within filled.contour plots in R?在 R 中的填充轮廓图中绘制一个框?
【发布时间】:2010-08-20 08:15:16
【问题描述】:

我正在尝试在填充的轮廓图中绘制一个框,但不幸的是,当我在创建填充轮廓图之后绘制 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))

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

谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

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

    此功能当前使用“布局”功能,因此受到限制 到整页显示。作为替代方案,请考虑“水平图” 和'lattice'包中的'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 语句! :)

    希望对你有帮助

    【讨论】:

    • 谢谢!这是一个巨大的帮助! rect 函数也是一个不错的技巧!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多