【问题标题】:multiple double y-axis plots via loop R循环R中的多个双y轴图
【发布时间】:2017-07-28 15:42:02
【问题描述】:

我有以下代码来创建一个简单的分割 y 轴图。 我想循环遍历(作为示例) edhec 数据集,以便面板矩阵中的每个面板都有两行:左侧的 edhec 的第一个向量和右侧的后续向量之一:

library(zoo)
library(PerformanceAnalytics)

data(edhec)
edhec <- as.zoo(edhec)
plot(edhec[ ,1], ylab=colnames(edhec[ ,1]), lwd=2)
par(new=TRUE)
plot(edhec[ ,2], ann=FALSE, yaxt="n", col="darkgreen", lwd=1)
axis(side=4)

感谢您的帮助!

【问题讨论】:

  • 你尝试过什么样的循环来达到你想要的效果?此外,循环可能不是实现预期结果的最佳方式,但是如果我们可以看到您尝试过的内容,则更容易收集您的意图。
  • 摆脱 par(new = TRUE) 并使用任何标准方法将基图放在一起:par(mfrow)par(mfcol)layoutsplit.screen...(他们都有帮助页)。
  • 当我的大脑卡在 VBA 中时,我松散地使用“循环”这个词 - 但 lapply 的变体也是理想的。创建图矩阵的代码是这样的。我真的不知道如何将两者结合起来,也不知道这是否是正确的方法。
  • my.panel

标签: r


【解决方案1】:

我猜这大概就是你想要的吧?

library(zoo)
library(PerformanceAnalytics)

data(edhec)
edhec <- as.zoo(edhec)

par(mfrow=c(ceiling(ncol(edhec)/2), 2), 
  mar=c(0, 2, 0, 2), oma=c(2, 0, 1, 0), mgp=c(2, 0.7, 0))

invisible(lapply(1:ncol(edhec), 
  function(x) {
      par(new=FALSE)
      plot(edhec[, x], 
        xaxt=ifelse(x >= ncol(edhec) - 1, "s", "n"),
        ylab="")
      par(new=TRUE)
      plot(edhec[, x + 1], col="darkgreen", ann=FALSE, xaxt="n", yaxt="n")
      axis(side=4)
  }
))

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2018-01-30
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多