【发布时间】:2014-04-11 12:31:38
【问题描述】:
我不知道为什么下面的代码没有给我完整的圆圈,而只给出了其中的一部分。此外,我不知道如何在以 (0,0) 为中心且 r=1 和 a=2 的正方形内显示圆上或圆外的点。
library("plotrix")
n<-1000
plot.new()
frame()
x<-runif(n,-1,1)
y<-runif(n,-1,1)
for (i in 1:n) { plot(x[i],y[i])}
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
这是输出
所以我将它固定为以下,当我有 100 个点时,图表如下所示。为什么没有显示完整的圆圈?
plot(x,y)
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
感谢费尔南多,我修复了绘图,现在它看起来像这样,但我希望 x 的范围为(-1 到 1),就像 y 一样。 xlim 没有工作。你知道怎么回事吗?
magnitude = function(x, y) {
stopifnot(isTRUE(all.equal(length(x),length(y))))
return (sqrt(x^2 + y^2))
}
library("plotrix")
monte.carlo.pi<-function(n,draw=FALSE)
{
circle.points<-0
square.points<-0
x<-runif(n,-1,1)
y<-runif(n,-1,1)
for (i in 1:n)
{
#if ((x[i])^2 + (y[i])^2 <=1)
if (magnitude(x[i],y[i])<=1)
{
circle.points<-circle.points+1
square.points<-square.points+1
} else
{
square.points<-square.points+1
}
}
if (draw==TRUE)
{
plot.new()
frame()
plot(x,y,asp=1,xlim=c(-1,1),ylim=c(-1,1))
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
rect(-1,-1,1,1)
return(4*circle.points / square.points)
}
}
然后像下面这样调用函数:
monte.carlo.pi(100,T)
当前情节如下:
【问题讨论】:
-
您只绘制最后一点,尝试不使用 for 循环的 plot(x, y)。
-
我不确定,但试试
plot(x, y, asp = 1)。如果出错,请检查此stackoverflow.com/questions/5411796/…。 -
@Fernando 你能看看更新后的问题吗?
-
好的,我去看看。
-
对我来说 xlim 有效,但如果我使用 RStudio 的“缩放”按钮,x 轴会扩展(可能是 RStudio 的一个错误,我不确定)。