Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Pylab创建直线的绘图,然后从直线获取光栅化数据_Python_Matlab_Numpy_Scipy_Matplotlib - Fatal编程技术网

Python 使用Pylab创建直线的绘图,然后从直线获取光栅化数据

Python 使用Pylab创建直线的绘图,然后从直线获取光栅化数据,python,matlab,numpy,scipy,matplotlib,Python,Matlab,Numpy,Scipy,Matplotlib,我试图从pylab绘图函数中获取光栅化线数据。我的代码是这样的: fitfunc = lambda p, x: p[0] + p[1] * sin(2 * pi * x / data[head[0]].size + p[2]) errfunc = lambda p, x, y: fitfunc(p, x) - y data = np.genfromtxt(dataFileName, dtype=None, delimiter='\t', names=True) xAxisSeries =li

我试图从pylab绘图函数中获取光栅化线数据。我的代码是这样的:

fitfunc = lambda p, x: p[0] + p[1] * sin(2 * pi * x / data[head[0]].size + p[2])
errfunc = lambda p, x, y: fitfunc(p, x) - y

data = np.genfromtxt(dataFileName, dtype=None, delimiter='\t', names=True)

xAxisSeries =linspace(0., data[head[0]].max(), data[head[0]].size)

p0 = [489., 1000., 9000.] # Initial guess for the parameters
p1, success = optimize.leastsq(errfunc, p0[:], args=(xAxisSeries, data[head[1]]))

time = linspace(xAxisSeries.min(), xAxisSeries.max(), 1000)

plotinfo = plot(time, fitfunc(p1, time), 'r-')
我想从plotinfo获取x和y线数据。使用“类型(plotinfo)”时,plotinfo是一个列表,但使用“打印plotinfo”时,它是一个列表对象

import numpy as np
import matplotlib.pyplot as plt
N=4
x=np.linspace(0, 10, N)
y=np.cumsum(np.random.random(N) - 0.5)
line=plt.plot(x,y)[0]
path=line._path
这些是原始(x,y)数据点:

print(path.vertices)
# [[  0.           0.08426592]
#  [  3.33333333   0.14204252]
#  [  6.66666667   0.41860647]
#  [ 10.           0.22516175]]
在这里,我们(线性)插值以找到附加点。您可以将参数增加到
path.interpolated
,以在原始点之间找到更多插值点

path2=path.interpolated(2)
print(path2.vertices)
# [[  0.           0.08426592]
#  [  1.66666667   0.11315422]
#  [  3.33333333   0.14204252]
#  [  5.           0.2803245 ]
#  [  6.66666667   0.41860647]
#  [  8.33333333   0.32188411]
#  [ 10.           0.22516175]]

(time,fitfunc(p1,time))
不是您要查找的
(x,y)
数据吗?或者你想让它在pylab图形的像素坐标中?或者别的什么?如果我理解正确,你想要插值数据?你可以从函数中得到你想要的任何点,为什么要使用插值?如果需要插值,请使用:np.interp(new_x,old_x,old_y)是否有方法获取0,1,2,3…到10的值?没关系,我只是重读了你的帖子。谢谢!如果您想要在特定点上插值,我将使用tillsten的想法:
y2=np.interp(范围(11),x,y)
。使用它,不需要matplotlib。他只需要使用fitfunc(p1,范围(11))。