如何删除R中不需要的行

时间:2015-11-01 00:26:32

标签: r graphics

我有以下代码使用R绘制圆圈。它会在0处添加一条水平线,这是不需要的。我想知道如何删除该线段。我试过了abline(v=0, col="white")。但它只是减轻线条而不是完全移除它。

x <- seq(-1, 1, by=0.01)
y <- sqrt(1-x^2)

x <- c(x, x)
y <- c(y, -y)

par(mar=c(2, 0, 0, 0), pty="s")
plot(x, y, type="l", xlim=c(-2, 2), ylim=c(-2, 2))

enter image description here

更新

感谢您的所有答案。我意识到问题在于订购。以下修改代码将解决问题。不再有零线了。

x <- seq(-1, 1, by=0.01)
y <- sqrt(1-x^2)

x <- c(x, -x)
y <- c(y, -y)

4 个答案:

答案 0 :(得分:2)

你想a)删除线或b)在第一个地方绘制一个没有水平线的圆圈?

如果a):该行在那里,因为你如何连接x(x < - c(x,x))。这意味着x从-1变为1,然后再次跳回。如何摆脱它有两种选择:

  1. 在两个半圈之间添加NA:

    x <- c(x, NA, x)
    y <- c(y, NA, -y)
    

    这是有效的,因为NA在绘图时会断开连续的线条。

  2. 或者,重新订购另一半半环,如

    o <- order(-x)
    x <- c(x, x[o])
    y <- c(y, -y[o])
    

答案 1 :(得分:2)

enter image description here为什么不:

x <- seq(-1, 1, by=0.01)
y <- sqrt(1-x^2)

x <- c(x, -x)
y <- c(y, -y)

par(mar=c(2, 0, 0, 0), pty="s")
plot(x, y, type="l", xlim=c(-2, 2), ylim=c(-2, 2))

答案 2 :(得分:1)

这是一种在没有所述线条的情况下绘制圆圈的替代方法:

circle <- function(radius=1, num_segments=360, center=c(0, 0)) {
  return(list(x=center[1] + radius * cos(seq(0, 2*pi, length.out=num_segments)), 
              y=center[2] + radius * sin(seq(0, 2*pi, length.out=num_segments))))
}

cir <- circle()

par(mar=c(2, 0, 0, 0), pty="s")
plot(cir$x, cir$y, type="l", xlim=c(-2, 2), ylim=c(-2, 2))

enter image description here

答案 3 :(得分:1)

这应该可以解决问题:

abline(h=0, lwd=1, col="white")