1

我正在运行以下代码:

par(bg="yellow", mar=c(2,2,2,2))
layout(matrix(c(rep(1,12),2:13),nrow=2,byrow=T),width=myWidth)
plot(days,sum_precip,type="l",xaxt="n",yaxt="n",ann=FALSE,
                      xlab="TEST",main="WEWQWE",ylab="dsads")

在最后一条语句中,即使在参数中指定了它,我的绘图也无法显示任何标签。是因为我的利润太小吗?

我正在尝试为布局底行上的每个图表添加 x 轴标题。

问题示例:

请注意,我更好奇为什么这不起作用。我知道我可以只指定一个轴(..),但这更不感兴趣。

4

2 回答 2

1

是的,利润太小了。

例子:

par(mar=rep(4,4))
plot(1, 1, xaxt='n', xlab='x', yaxt='n', ylab='y')

边距 4,4,4,4

这显示了标签(抱歉它很小)。

但是使用par(mar=rep(2,4))

边距 2,2,2,2

标签被切断。

您可以使用该mgp参数来修改轴文本相对于轴的偏移量(以行为单位)。特别是 ( ?par),mgp是长度为 3 的向量,其中mgp[1]是绘图和轴标签之间的线,mgp[2]是轴线本身,mpg[3]是轴刻度标签。

所以:

par(mar=rep(2,4))
# mgp[2:3] irrelevant in this case as we have turned
# axis line/ticks off; doesn't matter what they are set to
plot(1, 1, xaxt='n', xlab='x', yaxt='n', ylab='y', mgp=c(1,0,0))

这会将轴标签放置在距离轴 1 行的位置(即在第二行之外),正好适合我们的边距 2,2,2,2。

边距 2,2,2,2 与 mgp

于 2013-02-26T02:39:01.353 回答
1

这里有一个使用mtext. 见 ?mtext

文本写入当前图形区域的四个边距之一或设备区域的外边距之一。

 par(bg="lightyellow", mar=c(2,2,2,2))
 layout(matrix(c(rep(1,12),2:13),nrow=2,byrow=T))

 replicate(13,
           {  plot(x=1:5,y=cumsum(1:5),type="l",xaxt="n",yaxt="n",ann=FALSE)
              mtext(text='TEST',side=1,line=1)
              mtext(text='dsads',side=2,line=1)

              })

在此处输入图像描述

编辑

您可以为每个绘图设置边距。

 par(bg="lightyellow", mar=c(2,2,2,0))
 layout(matrix(c(rep(1,12),2:13),nrow=2,byrow=T))
 for(i in 1:13){  
              if (i %in% 1:2){
                plot(x=1:5,y=cumsum(1:5),type="l",xaxt="n",yaxt="n",ann=FALSE)
                  mtext(text='TEST',side=1,line=1)
                  mtext(text='dsads',side=2,line=1)
              }else{
                par( mar=c(2,0,2,0))
                plot(x=1:5,y=cumsum(1:5),type="l",xaxt="n",yaxt="n",ann=FALSE)
              }
          } 

在此处输入图像描述

于 2013-02-26T02:41:23.963 回答