使用python matplotlib用行绘制非连续数据

时间:2019-03-25 15:46:47

标签: python list matplotlib

我需要使用一系列的matplotlib绘制数据,但是缺少一些值,因此它不是完全连续的。当前,数据以简单列表的形式显示,每个“ N”值显示一个值,从15到40,因此存在这些值的列表,作为x信息传递给绘图命令。数据将作为y信息的列表传递,并且当前拥有一些numpy.nan,用于没有该集合数据的地方。

我需要做的是如图所示进行绘制,只是我需要忽略丢失的数据点,并在下一个数据点之间连接线,例如x = 20处的红色圆圈应连接到红色圆圈在x = 35时,两个标记正在通过相同的plot命令绘制。

Sample plot

此代码需要绘制各种数据集,其中有些在15时将没有数据,但是需要显示没有数据,即,为了清楚起见,轴保持不变,并且连接了序列以显示趋势。 / p>

红色圆圈数据的样本数据:

[numpy.nan, 6.3, numpy.nan, numpy.nan, 8.4, numpy.nan]

绿色圆圈数据的样本数据:

[numpy.nan, 4.1, 4.3, numpy.nan, 5.8, nunmpy.nan]

fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(111)
ax.plot(plens, polyplot, linestyle='--', marker='^', markersize=7.0, color='red')

我忽略了多余的信息,例如颜色索引和标签,因为它们对问题并不重要。谢谢。

1 个答案:

答案 0 :(得分:1)

我要做的是像这样从域和绘制的值中删除这些元素。

我将使用y来表示似乎在polyplot中的值,并使用x来表示您的域,在域中可能称为plens脚本。

import numpy as np

x = np.array([15, 20, 25, 30, 35, 40]) # Gotten from the image
y = np.array([np.nan, 4.1, 4.3, np.nan, 5.8, np.nan]) # Red circle data
y_not_nan_inds = ~np.isnan(y)

ax.plot(x[y_not_nan_inds], y[y_not_nan_inds], ...)

在这里,我们将所有内容都放入numpy数组中,找到存在y值的位置,并在这些区域上绘制线。