R 如何为2个变量生成值以绘制圆

R 如何为2个变量生成值以绘制圆,r,function,graph,simulator,R,Function,Graph,Simulator,我一直在尝试生成随机值,以便可以构造一个圆。 x和y的值应满足以下等式 x^2+y^2=1 这是我使用的代码 par(type = "s") x <- runif(1000, min = -1, max = 1) y <- sqrt(1 - x^2) z <- NULL z$x <- x z$y <- y z <- as.data.frame(z) plot.new() plot(z$x, z$y, type = "p") plot.window(xlim =

我一直在尝试生成随机值,以便可以构造一个圆。 x和y的值应满足以下等式

x^2+y^2=1

这是我使用的代码

par(type = "s")
x <- runif(1000, min = -1, max = 1)
y <- sqrt(1 - x^2)
z <- NULL
z$x <- x
z$y <- y
z <- as.data.frame(z)
plot.new()
plot(z$x, z$y, type = "p")
plot.window(xlim = c(-10,10), ylim = c(-10,10), asp = 1)
par(type=“s”)

x也许你错过了@thelatemail的评论:

png()
plot(z$x, z$y, type = "p", asp=1)
dev.off()

将asp=1传递给plot.window失败的原因(如果先调用它,这是您可能尝试过的)是
plot
本身再次调用
plot.window,并且在此过程中重新获取默认值。您可以在plot.default的代码中看到:

> plot.default
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL, 
    log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, 
    ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, 
    panel.last = NULL, asp = NA, ...) 
{
    localAxis <- function(..., col, bg, pch, cex, lty, lwd) Axis(...)
    localBox <- function(..., col, bg, pch, cex, lty, lwd) box(...)
    localWindow <- function(..., col, bg, pch, cex, lty, lwd) plot.window(...)
#.... omitted the rest of the R code.
>plot.default
函数(x,y=NULL,type=“p”,xlim=NULL,ylim=NULL,
log=”“,main=NULL,sub=NULL,xlab=NULL,ylab=NULL,
ann=par(“ann”),axes=TRUE,frame.plot=axes,panel.first=NULL,
panel.last=NULL,asp=NA,…)
{

localAxis也许您错过了@thelatemail的评论:

png()
plot(z$x, z$y, type = "p", asp=1)
dev.off()

将asp=1传递到plot.window会失败(如果先调用它,您可能已经尝试过了),原因是
plot
本身再次调用
plot.window
,并且在此过程中重新获取默认值。您可以在plot.default的代码中看到:

> plot.default
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL, 
    log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, 
    ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, 
    panel.last = NULL, asp = NA, ...) 
{
    localAxis <- function(..., col, bg, pch, cex, lty, lwd) Axis(...)
    localBox <- function(..., col, bg, pch, cex, lty, lwd) box(...)
    localWindow <- function(..., col, bg, pch, cex, lty, lwd) plot.window(...)
#.... omitted the rest of the R code.
>plot.default
函数(x,y=NULL,type=“p”,xlim=NULL,ylim=NULL,
log=”“,main=NULL,sub=NULL,xlab=NULL,ylab=NULL,
ann=par(“ann”),axes=TRUE,frame.plot=axes,panel.first=NULL,
panel.last=NULL,asp=NA,…)
{

localAxis问题出在代码的这一部分:

x <- runif(1000, min = -1, max = 1)
y <- sqrt(1 - x^2)enter code here

正如John Coleman在评论中建议的那样,我更喜欢使用参数/极坐标。生成0到2pi之间的弧度角度,然后使用生成的角度和所需的半径计算适当的x和y位置

radius = 1
theta = runif(1000, min = 0, max = 2*pi)
x = radius * cos(theta)
y = radius * sin(theta)
plot(x,y, asp=1)

对于问题的最后一部分,对于变量的每个值,您必须计算出求解方程的所有可能元组,如果
z
a
也是变量,则可能无法仅在二维图形上表示它。

问题在代码的这一部分中:

x <- runif(1000, min = -1, max = 1)
y <- sqrt(1 - x^2)enter code here

正如John Coleman在评论中建议的那样,我更喜欢使用参数/极坐标。生成0到2pi之间的弧度角度,然后使用生成的角度和所需的半径计算适当的x和y位置

radius = 1
theta = runif(1000, min = 0, max = 2*pi)
x = radius * cos(theta)
y = radius * sin(theta)
plot(x,y, asp=1)

对于问题的最后一部分,对于变量的每个值,您必须计算出所有可能的元组来解方程,如果
z
a
也是变量,则可能无法仅在二维图形上表示它。

y但它仍然无法解释为什么图形看起来像一个椭圆e?我看不出哪里出了问题。不要在绘图后设置绘图限制--将它们放在原始的
plot
函数调用
plot中。new()
以默认的
asp=
开始绘图-只需使用
plot(z$x,z$y,type=“p”,asp=1)
一次。@AnirudhMurali您在一个具有不同x轴和y轴限制的绘图中显示了一个单位圆。显然,这会将您的(一半)单位圆拉伸成一个(一半)单位圆椭圆。
y但它仍然不能解释为什么图形看起来像椭圆?我看不出哪里出了问题。不要在绘图后设置绘图限制--将它们放在原始的
plot
函数调用
plot.new()
以默认的
asp=
开始绘图-只需使用
plot(z$x,z$y,type=“p”,asp=1)
一次。@AnirudhMurali您在一个具有不同x轴和y轴限制的绘图中显示了一个单位圆。显然,这会将您的(半)单位圆拉伸成一个(半)椭圆。谢谢,这为我澄清了plot()的问题谢谢,这为我澄清了plot()的问题