使用Matplotlib将R绘图代码重写到Python中,但不会得到相同的结果

使用Matplotlib将R绘图代码重写到Python中,但不会得到相同的结果,python,r,matplotlib,linear-algebra,Python,R,Matplotlib,Linear Algebra,我曾尝试将绘图的代码从R重写为Python,但得到的图表看起来不正确。Python散点图的点似乎落在一条线上。我想知道我在替换rnorm时是否在np.random.normal中使用了错误的函数 这是原始R代码: g <- 9.8 ##meters per second n <- 25 tt <- seq(0,3.4,len=n) ##time in secs, t is a base function f <- 56.67 - 0.5*g*tt^2 y <-

我曾尝试将绘图的代码从R重写为Python,但得到的图表看起来不正确。Python散点图的点似乎落在一条线上。我想知道我在替换
rnorm
时是否在
np.random.normal
中使用了错误的函数

这是原始R代码:

g <- 9.8 ##meters per second
n <- 25
tt <- seq(0,3.4,len=n) ##time in secs, t is a base function
f <- 56.67  - 0.5*g*tt^2
y <-  f + rnorm(n,sd=1)

plot(tt,y,ylab="Distance in meters",xlab="Time in seconds")
lines(tt,f,col=2)
第一个是R(期望)图:

然而,下面是Python的情节:

您正在以错误的顺序将参数传递给
np.random.normal()
。第一个参数是样本的平均值,您当前给出的是
25
,因此两条曲线基本上是偏移的

正确的方法是将所需随机数组的大小作为最后一个参数传递

y = f + np.random.normal(scale=1.0, size=n) 
其中
size
是元素数。缔约国声明如下:

参数
loc:浮点或类似浮点的数组 分布的平均值(“中心”)

缩放:浮点或类似数组的浮点 分布的标准偏差(分布或“宽度”)

大小:整数或整数元组,可选 输出形状。如果给定的形状是,例如,(m,n,k),则绘制m*n*k样本。如果size为None(默认),则如果loc和scale都是标量,则返回单个值。否则,将绘制np.广播(loc,scale).尺寸样本


有趣的是,您是否检查了np.random.normal的文档,以确保它与rnorm所做的完全匹配?
y = f + np.random.normal(scale=1.0, size=n)