使用模块化绘图摆脱图形中的线

Getting rid of the line across the graph with modular plotting

我正在使用以下 python 脚本绘制一些数据

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0, 25, 501)
plt.figure()
plt.plot(np.mod(t, 2*np.pi), np.sin(t-np.pi/4))
plt.show()

看到从大约 (2*pi, -0.7) 到大约 (0, -0.65) 的那条烦人的线了吗?我希望能够在不弄乱图表其余部分的同时不显示这一点。我需要这是一个 2D 图,所以圆柱形绘图不适合我。我该怎么做呢?我尝试更改线型,但没有用。

问题是您正在对 t 变量应用 mod(模数,而不是模数),这迫使它介于 0 和 2*pi 之间。这会导致绘图向左 "go back" 多次(每 2*pi 的倍数一次)。如果您删除 mod 并简单地使用 t 作为因变量进行绘图,您将得到以下结果。

plt.plot(t, np.sin(t-np.pi/4))

如果这不是您想要的,并且您实际上只想要您的代码产生的部分正弦波,您可以执行如下操作并替换之前的最后一点用 NaN 换行,这将打破绘图线。

tt = mod(t, np.pi * 2)
tt[np.diff(tt) < -6] = np.nan
plt.plot(tt, np.sin(t-np.pi/4));