使用 Pylab 创建线条图,然后从线条中获取栅格化数据

发布于 2024-12-10 19:07:27 字数 689 浏览 1 评论 0原文

我正在尝试从 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线数据。当我使用“type(plotinfo)”时,plotinfo是一个列表,但当使用“printplotinfo”时,它是一个2dlist对象。

I am trying to get the rasterized line data from a pylab plot function. My code is like so:

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-')

I want to get the x and y line data from plotinfo. When I use "type(plotinfo)," plotinfo is a list, but when using "print plotinfo," it is a 2dlist object.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺孤伤于心 2024-12-17 19:07:27
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]]
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

These are the original (x,y) data points:

print(path.vertices)
# [[  0.           0.08426592]
#  [  3.33333333   0.14204252]
#  [  6.66666667   0.41860647]
#  [ 10.           0.22516175]]

Here we (linearly) interpolate to find additional points. You can increase the argument to path.interpolated to find more interpolated points between the original points.

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]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文