【问题标题】:Align grid in secundary y axis - base plot R在辅助 y 轴上对齐网格 - 基础图 R
【发布时间】:2020-06-15 20:03:20
【问题描述】:

我一直在尝试显示具有两个不同 y 轴范围值的数据。这个responsebarplot 非常有帮助:

# data 1
yy <- c(30,45,60,100,110,90,80,50,20,10,10,15)
name1 <- month.abb
xx <- barplot(yy, ylab = "", names.arg = name1,col="steelblue", ylim = c(0,120))

# data 2
par(new = T)
yy2 <- c(20,21,21,22,23,23.5,22,20,19,19,18,19)
plot(xx + 0.5, yy2, "l", ylim = c(18,24), lwd = 2,col="red", lty=1, 
     axes=F, xlim=c(min(xx), max(xx)+1))
points(xx + 0.5, yy2, pch = 18, cex = 1,col="red")
axis(4)
box()

# example grid
abline(h = 18)
### abline 18 through 23
abline(h = 24)

导致这个输出

我想知道如何在 y 轴之间对齐网格。我想将次轴拉伸到盒子的顶部和底部可以做到这一点,但我不知道如何进行拉伸。有什么建议吗?


编辑。寻找一种很好的方式来放置图例,我发现this 回复,我认为这很简单。

【问题讨论】:

    标签: r graph yaxis


    【解决方案1】:

    默认情况下,plot 在绘图范围的所有边增加 4%。 barplot 不这样做。这就是为什么你的两个轴不对齐的原因。您可以使用参数yaxs="i" 关闭额外添加的空间。此外,我没有多次使用abline,而是使用grid 添加了水平线。把这些放在一起,我得到:

    xx <- barplot(yy, ylab = "", names.arg = name1,col="steelblue", ylim = c(0,120))
    
    # data 2
    par(new = T)
    yy2 <- c(20,21,21,22,23,23.5,22,20,19,19,18,19)
    plot(xx + 0.5, yy2, "l", ylim = c(18,24), lwd = 2,col="red", lty=1, 
         axes=F, xlim=c(min(xx), max(xx)+1), yaxs="i")
    points(xx + 0.5, yy2, pch = 18, cex = 1,col="red")
    axis(4)
    box()
    
    grid(nx=1, ny=6, lty=1, col="black")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多