我试图弄清楚如何消除功能“切碎”时出现的虚假“连接线”,以便仅在单个间隔内绘制它。例如,假设我有一个从零扩展到10 pi(或什至更大)的角度函数,并且我只想在0到2 pi的范围内绘制此函数。我可以使用模运算来修复数据,但是如果绘制数据,则会得到一条从2 pi返回零的线,我不想绘制。这是一些代码,显示了我在说什么。
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 10*np.pi, 1000)
y = t + np.sin(t)
t2 = t%(2*np.pi)
plt.plot(t2, y)
plt.show()
生成的图具有一系列我不想要的水平线(请参见下图)。我对此进行了一些研究,但没有找到任何简单的方法来处理这种情况,但似乎这有点普遍。
有什么想法吗?
顺便说一下,我正在处理相当大的数据集,所以我不能很好地“手动”做任何事情。
答案 0 :(得分:2)
通常,您可以使用NaN
将中断插入点。在显示的特定情况下,您可以使用np.diff
来识别不连续性,并将这些位置处的t2
值设置为NaN
,以得到所需的中断
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 10*np.pi, 1000)
y = t + np.sin(t)
t2 = t % (2*np.pi)
# Compute the difference between successive t2 values
diffs = np.append(np.diff(t2), 0)
# Find the differences that are greater than pi
discont_indices = np.abs(diffs) > np.pi
# Set those t2 values to NaN
t2[discont_indices] = np.nan
plt.plot(t2, y)
plt.show()
答案 1 :(得分:0)