使用Matplotlib将R绘图代码重写到Python中,但不会得到相同的结果
我曾尝试将绘图的代码从R重写为Python,但得到的图表看起来不正确。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 <-
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)