matplotlib:在点之间画线,忽略丢失的数据
问题内容:
我有一组要绘制为折线图的数据。对于每个系列,缺少一些数据(但每个系列都不同)。当前,matplotlib不会绘制跳过丢失数据的线:例如
import matplotlib.pyplot as plt
xs = range(8)
series1 = [1, 3, 3, None, None, 5, 8, 9]
series2 = [2, None, 5, None, 4, None, 3, 2]
plt.plot(xs, series1, linestyle='-', marker='o')
plt.plot(xs, series2, linestyle='-', marker='o')
plt.show()
会导致图中的线条出现间隙。我该如何告诉matplotlib在空白处画线?(我宁愿不必插值数据)。
问题答案:
您可以通过以下方式屏蔽NaN值:
import numpy as np
import matplotlib.pyplot as plt
xs = np.arange(8)
series1 = np.array([1, 3, 3, None, None, 5, 8, 9]).astype(np.double)
s1mask = np.isfinite(series1)
series2 = np.array([2, None, 5, None, 4, None, 3, 2]).astype(np.double)
s2mask = np.isfinite(series2)
plt.plot(xs[s1mask], series1[s1mask], linestyle='-', marker='o')
plt.plot(xs[s2mask], series2[s2mask], linestyle='-', marker='o')
plt.show()
这将导致