绘制周期性轨迹

Ten*_*gis 4 python numpy matplotlib

我有一些粒子在走廊中移动并具有封闭边界条件的数据.绘制轨迹会产生锯齿形轨迹. 在此输入图像描述

我想知道如何阻止plot()连接点,粒子回到起点.有些东西比如图片的上半部分,但没有"."

我的第一个想法是在numpy数组a[:-1]-a[1:]获得positiv 时找到索引.然后从0到该索引的绘图.但是如何获得第一次出现正元素的指数a[:-1]-a[1:]?也许还有其他一些想法.

Tho*_*anz 13

我会采用不同的方法.首先,我不是通过查看导数的符号来确定跳跃点,因为运动可能会上升或下降,甚至可能会有一些周期性.我会看看那些带有最大衍生品的点.

其次,在绘图线中打破中断的优雅方法是在每次跳转时屏蔽一个值.然后matplotlib会自动制作片段.我的代码是:

import pylab as plt
import numpy as np

xs = np.linspace(0., 100., 1000.)
data = (xs*0.03 + np.sin(xs) * 0.1) % 1

plt.subplot(2,1,1)
plt.plot(xs, data, "r-")

#Make a masked array with jump points masked
abs_d_data = np.abs(np.diff(data))
mask = np.hstack([ abs_d_data > abs_d_data.mean()+3*abs_d_data.std(), [False]])
masked_data = np.ma.MaskedArray(data, mask)
plt.subplot(2,1,2)
plt.plot(xs, masked_data, "b-")

plt.show()
Run Code Online (Sandbox Code Playgroud)

并给我们结果: 在此输入图像描述

当然缺点是你在每次休息时都会失去一分 - 但是你似乎有了采样率,我想你可以用这个来换取更简单的代码.