考虑以下示例:
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语句来实现。然而,做这么简单的事情似乎做了很多工作。任何人都可以提出替代方法。由于我是R的初学者,我宁愿首先使用一些R基函数,即不是格子也不是ggplot。但是,如果使用基本功能没有更简洁的方法,欢迎提出其他建议。
答案 0 :(得分: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")))
此外,如果所有轴都相同,您可以将mtext
与outer=TRUE
一起使用。在绘制没有标签的所有内容之后,请尝试:
mtext("Day of Year", side=1, padj=-2, outer=TRUE)
mtext("Temperature", side=2, padj=2, outer=TRUE)