如何使用matplotlib根据彩色线段编程音高

时间:2017-02-13 19:11:12

标签: numpy matplotlib

我正在打印一张图表,其中一行来自2个numpy数组,其中包含相同数量的浮点数,并且工作正常。

f_used = sp.interpolate.interp1d(time, distance, kind='cubic')
timeinterp = sp.arange(0, runtime+incr, incr)
distinterp = f_used(timeinterp)
plt.plot(timeinterp, distinterp, '-', lw=3, c="red" )

到目前为止,这么好。在下一步中,我想根据它们的音高(distinterp / timeinterp)绘制线段。如果比率> 5.0然后让我们说线条样式应该是"点缀"或/并获得另一种颜色。 我找不到任何解决方案。有人有想法吗?

如果有帮助:Raspberry Pi 3上的Raspbian,使用Python3更新了所有软件

1 个答案:

答案 0 :(得分:1)

您将有效地将数据分成您想要的不同部分,因为每个线对象只能有一个样式/颜色/等。分配给它的组合。

使用numpy(或scipy,在你的情况下只是直接导入底层的numpy函数)应该是微不足道的:

mask = (distinterp / timeinterp) > 5.0
plt.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r')
plt.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b')

更好的方法可能是使用matplotlib的面向对象的API:

mask = (distinterp / timeinterp) > 5.0
fig, ax = plt.subplots()
ax.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r')
ax.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b')