为R中的对齐图创建伞标题

时间:2015-08-13 13:06:48

标签: r graphics scatter-plot

我已成功使用以下代码在R中创建和对齐三个散点图:

par(mfrow = c(3,1))

plot(CGP.GOSL ~ FPT.MAF.GOSL, data = all.locs, main = "A. Place I")
  abline(h=c(0.5))
  abline(v=c(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5), lty=2)
plot(CGP.IRE ~ FPT.MAF.IRE, data = all.locs, main = "B. Place II")
  abline(h=c(0.5))
  abline(v=c(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5), lty=2)
plot(CGP.BAR ~ FPT.MAF.BAR, data = all.locs, main = "C. Place III")
  abline(h=c(0.5))
  abline(v=c(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5), lty=2)

我现在要做的是通过为x和y轴设置单个Axis标签来节省空间。我试过试用par()函数,插入x和ylab函数,但似乎这些不是图形参数是不会接受它们的。我怀疑问题在于我将这些信息放在代码中,因为使用xlab和ylab似乎是有意义的,我可以在各个绘图代码中编写x和ylab =“”。

我也在努力改变主要标题的位置,以便出现在左边,从x轴中移除值,使它们只显示在整个图形的底部,并排列图形所以空间较小。

此图显示了我想要实现的当前布局和布局: Before and after

我很抱歉一次发布这么多问题。我对R很新,编程仍然发现帮助文件有点令人生畏,虽然我到了那里。关于功能的一些建议,将它们放在哪里以及如何使用它们来实现这些目标将是很好的。

2 个答案:

答案 0 :(得分:1)

有时,文档可能有点挑战性。这是我认为你正在寻找的骨架:

# 3 rows
par(mfrow=c(3,1))

# tighter margins
par(mar = c(0, 0, 0, 0), oma = c(4, 4, 0.5, 0.5))

# need some data
data(cars)

# 3 plots, no axis junk
plot(cars, ann=FALSE)
plot(cars, ann=FALSE)
plot(cars, ann=FALSE)

# outer labels
mtext("x axis", side = 1, outer = TRUE, cex = 0.7, line = 2.2)
mtext("y axis", side = 2, outer = TRUE, cex = 0.7, line = 2.2)

enter image description here

答案 1 :(得分:1)

这个答案基于hrbrmstr的答案,但结果更接近于所要求的布局:

# 3 rows
par(mfrow=c(3,1))

# Adjust margins. Each vector element refers to one side of the plot; 
# the order is c(bottom, left, top, right). (See ?par)
par(mar = c(2.5, 4.1, 1, 2.1), oma = c(3, 3, 2, 0))

# need some data
data(cars)


# 3 plots. On the first two: Suppress axis labels (ann = FALSE) and 
# the x axis (xaxt = "n"), then add the ticks using axis() and the
#  title using mtext(). On the last one, do not suppress x axis.
# Note that repeating arguments could be set globally using par().

plot(cars,  ann = FALSE, xaxt = "n")
axis(side = 1, labels = FALSE)
mtext(text = "A. Place I", side = 3, at = par("usr")[1], line = 1)

plot(cars, ann=FALSE, xaxt = "n")
axis(side = 1, labels = FALSE)
mtext(text = "B. Place II", side = 3, at = par("usr")[1], line = 1)

plot(cars, ann=FALSE)
mtext(text = "C. Place III", side = 3, at = par("usr")[1], line = 1)

# outer labels
mtext("X Axis label", side = 1, outer = TRUE)
mtext("Y Axis label", side = 2, outer = TRUE)

Result