python - matplotlib:在忽略缺失数据的点之间画线

标签 python 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()

这导致

Plot

关于python - matplotlib:在忽略缺失数据的点之间画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399689/

相关文章:

python - 在 tk 应用程序内触发关闭事件后,matplotlib 图不会继续程序流程

python - 如何使用 Pandas/Matplotlib 绘制 X 轴上的日期、Y 轴上的时间以及 HH :MM format as tick labels? 中的当前时间

python - 如何在图表中添加过滤器

python - 使用正则表达式进行标点符号校正

python - 如何在全息 View 中使用 matplotlib 后端

python - 为什么 Python 仍在垃圾收集我的 Tkinter 图像?

python - 如何从 JSON 多维附加动态下拉列表

python - 使用 matplotlib 和 python 绘制 datetime.timedelta

python - Pandas:根据行中的值与列添加进行日期比较

python - 使用 Django 支持的站点和 SQLite 随着时间的推移以特定速率递增整数的最佳方法是什么?