我有以下代码使用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))
更新
感谢您的所有答案。我意识到问题在于订购。以下修改代码将解决问题。不再有零线了。
x <- seq(-1, 1, by=0.01)
y <- sqrt(1-x^2)
x <- c(x, -x)
y <- c(y, -y)
答案 0 :(得分:2)
你想a)删除线或b)在第一个地方绘制一个没有水平线的圆圈?
如果a):该行在那里,因为你如何连接x(x < - c(x,x))。这意味着x从-1变为1,然后再次跳回。如何摆脱它有两种选择:
在两个半圈之间添加NA:
x <- c(x, NA, x)
y <- c(y, NA, -y)
这是有效的,因为NA在绘图时会断开连续的线条。
或者,重新订购另一半半环,如
o <- order(-x)
x <- c(x, x[o])
y <- c(y, -y[o])
答案 1 :(得分:2)
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))
答案 3 :(得分:1)
这应该可以解决问题:
abline(h=0, lwd=1, col="white")