python - 使用 python matplotlib 用线条绘制非连续数据
问题描述
我需要用 matplotlib 绘制数据,这是一个系列,但缺少一些值,所以它不是完全连续的。目前数据采用简单列表的形式,每个“N”值显示一个值,从 15 到 40,因此有一个这些值的列表,作为 x 信息传递给绘图命令。数据作为 y 信息的列表传递,并且当前拥有多个 numpy.nan,用于该集合没有数据的地方。
我需要做的是如图所示绘制它,除了我需要忽略丢失的数据点以及连接下一个数据点之间的线,例如 x=20 处的红色圆圈应连接到 x= 处的红色圆圈35,并且两个标记正在由相同的绘图命令绘制。
此代码需要绘制各种数据集,其中一些在 15 处没有数据,但需要显示没有数据,即为了清晰起见,轴保持不变,并且连接系列以显示趋势。
红圈数据的样本数据:
[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')
我把多余的信息放在一边,比如颜色索引和标签,因为它们对问题并不重要。谢谢。
解决方案
我要做的是从域和绘制的值中删除这些元素,就像这样。
我将使用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
值的位置,并在这些区域上绘制线条。
推荐阅读
- c# - 如何在 Xamarin 表单(如 android)中拥有类似于 colors.xml 的文件
- java - @RecentlyNonNull 注释是什么?
- laravel - Laravel Nova:生成没有字段的模型值
- javascript - AngulaJS ng绑定不起作用-无法设置未定义的属性
- javascript - 如何将聊天与 quickblox sdk 集成到 react native 中?
- linux - Kubernetes 中的问题
- javascript - 在 textarea 的 keyup 事件上将文本添加到无序列表
- angular6 - 'Amcharts.isReady' 在 angular6 中不起作用?
- c - 删除由 device_create()、class_create() 和 alloc_chrdev_region() 创建的文件
- swift - 如何在 swift iOS 中存储在 FileManager 中的音频文件上添加音频修剪?