【问题标题】:Scatter plot line to out of order data散点图线到乱序数据
【发布时间】:2020-03-18 22:10:10
【问题描述】:

我正在跟踪鸟类动物的运动。我在 xy 图上有检测点。我想将上一个检测到的点连接到下一个检测,无论方向如何。这将有助于删除无关的检测。

数据样本:

Sample input 目标是从前一个数据点到下一个数据点有一条线。

Sample output

方法一不成功:

plt.figure('Frame',figsize=(16,12))
plt.imshow(frame)
plt.plot(x, y, '-ro', 'd',markersize=2.5, color='orange')

Method 1 output

方法2不成功:

plt.plot(np.sort(x), y[np.argsort(x)], '-bo', ms = 2)

Method 2 output

【问题讨论】:

  • 你能描述一个示例输出吗?例如,您能否提供一个示例数据输入,以及您希望数据如何与该数据一起显示的示例?
  • @chadmc 我在上面添加了示例输入和输出。
  • 对不起,如果您以 python 形式打印数据会有所帮助。
  • 从方法 1 的输出中可以清楚地看出,您向plot 传递的数据点比示例输入中的要多得多。我不确定,但我认为方法 1 有效。如果您尝试使用来自示例输入的 x 和 y 会发生什么?
  • 我用更少的点和更好的过滤再次运行了代码。看起来这是我对无关点过滤不佳的错误。谢谢!

标签: python matplotlib scatter-plot line-plot


【解决方案1】:

我使用您的示例数据并使用方法 1(但使用 pandas)绘制了一个图,并且输出与您预期的一样。我不明白为什么你的结果不成功。

data = [{'frame': 1, 'x': 5, 'y': 15},
 {'frame': 4, 'x': 10, 'y': 15},
 {'frame': 5, 'x': 15, 'y': 15},
 {'frame': 6, 'x': 20, 'y': 15},
 {'frame': 7, 'x': 23, 'y': 20},
 {'frame': 8, 'x': 25, 'y': 25},
 {'frame': 11, 'x': 20, 'y': 23},
 {'frame': 15, 'x': 15, 'y': 20},
 {'frame': 18, 'x': 8, 'y': 18},
 {'frame': 19, 'x': 8, 'y': 10},
 {'frame': 20, 'x': 12, 'y': 7}]
df = pd.DataFrame(data).sort_values('frame')
df.plot(x='x', y='y')

【讨论】:

  • 谢谢!导致图像问题的是我的过滤错误。
猜你喜欢
  • 2016-05-30
  • 2018-06-02
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2023-04-10
  • 2011-07-14
相关资源
最近更新 更多