我有一个具有有效“连续”传感器读数的数据集,偶尔会有间隙。
然而,有几个时期没有记录数据。这些差距明显长于采样周期。
默认情况下,pyplot 将每个数据点连接到下一个数据点(如果我设置了线型),但是我觉得当它连接长间隙两侧的两个数据点时,这有点误导。
我宁愿那里没有线;也就是说,我希望线路停止并在间隙后重新开始。
我尝试使用 y-value 在这些间隙部分中添加一个元素None
,但似乎将该线发送回绘图的较早部分(尽管奇怪的是这些线并未出现在所有缩放级别)。
我想到的另一个选择是通过单独调用来简单地绘制每个部分plot
,但这会有点丑陋和麻烦。
有没有更优雅的方法来实现这一点?
编辑:下面是一个演示行为的最小工作示例。第一个情节是我试图避免的连接线。第二个图显示添加一个None
值似乎有效,但是如果您平移图的视图,您会得到第三个图中所示的内容,一条线跳转到图的较早部分。
import numpy as np
import matplotlib.pyplot as plt
t1 = np.arange(0, 8, 0.05)
t2 = np.arange(10, 14, 0.05)
t = np.concatenate([t1, t2])
c = np.cos(t)
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.set_title('Undesirable joining line')
t1 = np.arange(0, 8, 0.05)
t2 = np.arange(10, 14, 0.05)
c1 = np.cos(t1)
c2 = np.cos(t2)
t = np.concatenate([t1, t1[-1:], t2])
c = np.concatenate([c1, [None,], c2])
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.set_title('Ok if you don\'t pan the plot')
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.axis([-1, 12, -0.5, 1.25])
ax.set_title('Strange jumping line')
plt.show()