【问题标题】:R Plot multiple series with par(new=T) - axis labels are overlaying each other, making the plot unreadableR 用 par(new=T) 绘制多个系列 - 轴标签相互重叠,使绘图不可读
【发布时间】:2014-10-25 20:59:37
【问题描述】:

我正在绘制多个数据系列。

colos=c('red','green','purple','pink','brown')
par(new=F)
for (i in 1:5)
{
  plot(dat[[i+1]],col=colos[i],cex=marksize,xlab='Reading #',ylab = 'Current')
  par(new=T)
}

我的情节是这样的:

有没有办法可以在每次迭代时覆盖绘图轴,但不覆盖绘制点?

【问题讨论】:

  • 为什么不使用linespoints
  • 我在尝试该方法时遇到了问题。点是解决此问题的正确方法,而不是使用 par(new=T) 绘图吗?
  • 我就是这样做的。使用您的 plot 调用绘制第一个,然后使用 invisible(lapply(2:5, function(i) points(dat[[i]], col = colos[i]))) 其余的
  • 你能发布示例代码吗?我无法按照这些说明进行操作。在我的示例中,function(x) 是否类似于 dat[[i]]?
  • function(x) 是一个匿名函数。我发布了一个答案来展示一个例子

标签: r plot par


【解决方案1】:

您可能想改用linespoints 函数。这是我通常如何解决此问题的示例。这样,您只需将点叠加在现有图的顶部,而不是将一个图绘制在另一个图之上。

使用您原来的 plot 调用绘制第一个,然后使用 lapply 覆盖其他列的点。

set.seed(1)
dat <- data.frame(replicate(5, sample(10)))
colos <- c('red','green','purple','pink','brown')
plot(dat[[1]], col = colos[1], xlab = 'Reading #',   
     ylab = 'Current', ylim = range(as.matrix(dat)))
invisible(lapply(2:ncol(dat), function(i) points(dat[[i]], col = colos[i])))

【讨论】:

  • 这个解决方案对我不起作用。添加每个新数据集后,我需要重新调整 y 轴。
  • 在原来的plot 调用中,尝试设置ylim = range(as.matrix(dat)) 应该可以解决它。另外,我还不确定透明点。我需要研究一下(不记得了)。
【解决方案2】:

使用 xaxtyaxt 关闭坐标区

例如:

plot(1:10)
par(new=TRUE)
plot(1:10, rnorm(10), xaxt="n", yaxt="n", xlab="", ylab="", type="l")
axis(side=4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多