【问题标题】:How to plot "multiple" curves with a break through y-data-range in R?如何在 R 中绘制突破 y 数据范围的“多条”曲线?
【发布时间】:2015-08-05 06:57:07
【问题描述】:

plotrix 包中的函数 gap.plot 用于绘制想要在 y 轴或 x 轴上放置间隙的图形。但是,我似乎无法在图中添加曲线。这是一个玩具可重现的例子。

xx = c(100, 10,9,8,7,0)
yy = c(88, 9,9,7,7,7)
tt = 1:6;
gapxy = c(12, 85)
gap.plot(tt, xx, gap=gapxy, ylim=c(0,100), ytics=c(1:11, 86:100) )
lines(tt, yy)

这里的关键问题是yy 数据和xx 数据的值会位于差距中。这会导致警告消息。然而,更令人担忧的是,yy 变量的最大值为 88,但将yy 添加到间隙图中会使其最大值超出页面。无论如何要纠正这一点。我不一定坚持使用间隙图,但确实要求我们坚持使用基本包,不要使用 ggplot2 解决方案。正如文档中所建议的,我已经尝试用第二个 gap.plot 调用替换行,使用 add = T 作为选项,但这会导致 yy 的上半部分没有绘图。

gap.plot(tt, yy, gap=gapxy, add=T, type='l', ylim=c(0,100))

【问题讨论】:

    标签: r plot


    【解决方案1】:

    线条没有按原样显示的原因是gap.plot 没有正确设置坐标系,如

    > par("usr")
    [1]  0.80  6.20 -1.08 28.08
    

    表示 x 轴的范围应在 [0.8, 6.2] 之间,但 y 轴的范围在 [-1.08, 28.08] 之间,即使该图使它看起来一直到 100。

    而不是使用gap.plot,我建议您使用 R 的标准工具设置一个两面板图。它需要更多的代码,但要掌握它。

    par(mfrow=2:1, mar=rep(.5, 4), oma=c(3,3,1,1))
    plot(tt, xx, ylim=c(86, 100), axes=FALSE)
    axis(2); box()
    lines(tt, yy)
    plot(tt, xx, ylim=c(1, 11))
    lines(tt, yy)
    

    【讨论】:

    • 工作就像一个魅力......没有什么比回到基础而不是试图折磨包做他们不打算做的事情。
    • 是的,你可以通过控制面板和边距来做很多看起来很花哨的东西,所以如果你不熟悉它们,请务必查看maroma .
    • 对于那些需要不同顶部和底部面板的绘图,使用选项 fignew=TRUE 分别为每个面板而不是 mfrow
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2019-02-27
    • 1970-01-01
    • 2019-08-31
    • 2021-07-05
    • 2015-09-25
    相关资源
    最近更新 更多