0

考虑以下示例:

dat <- matrix(rexp(240, rate=.1), ncol=6)
par(mfrow=c(3,2))

for (i in 1:6){
    plot(dat[,i],xlab = "Day of year",col = "black",
         ylab = expression(paste("Temperature ",degree,"C")))
  }

这会产生 6 个子图,其中清楚地显示了 x 和 y 标签。 在此处输入图像描述

我想对此进行更改,以便 ylabel 仅显示在右侧的面板上(以避免重复)。所以,我写:

for (i in 1:6){
  if (i %% 2 == 0){
    plot(dat[,i],ylab = "",xlab = "Day of year",col = "black")
  }
  else {plot(dat[,i],ylab = expression(paste("Temperature ",degree,"C")),
             xlab = "Day of year",col = "black")
  }
}

产生: 在此处输入图像描述

我们可以看到现在只有偶数面板有 ylabel。我还想要这个图,以便只有面板 5 和 6 有 xlabel,我可以通过添加另一个 if 语句来实现。但是,做这么简单的事情似乎需要做很多工作。任何人都可以建议一种替代方法。由于我是 RI 的初学者,因此我更愿意首先使用一些 R 基本函数,即不是 lattice 也不是 ggplot。但是,如果没有更简洁的方法来使用基本功能,欢迎提出其他建议。

4

1 回答 1

2

ifelse是一个有用的捷径。

for (i in 1:6){
    plot(dat[,i],xlab = ifelse(i %% 2 == 0,"","Day of year",col = "black",
         ylab = ifelse(i %% 2 == 0,"",expression(paste("Temperature ",degree,"C")))

此外,如果所有轴都相同,则可以使用mtextwith 。outer=TRUE绘制没有标签的所有内容后,请尝试:

mtext("Day of Year", side=1, padj=-2, outer=TRUE)
mtext("Temperature", side=2, padj=2, outer=TRUE)

在此处输入图像描述

于 2012-12-12T18:34:57.017 回答