使用模块化绘图摆脱图形中的线
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));
我正在使用以下 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));