在 devexpress 图表中找到两个系列的重叠点

Posted

技术标签:

【中文标题】在 devexpress 图表中找到两个系列的重叠点【英文标题】:find the overlapping points of two series in devexpress chart 【发布时间】:2017-08-05 03:29:46 【问题描述】:

如您所见,我有一个包含两个系列的 winform 图表(DevExpress Chart)。 每个系列都有自己的观点。 而我想要的是找到这两个系列的重叠点(图中绿色圆圈所指)。

例如(第一个重叠点为 3.4,第二个重叠点为 7.3)。 谢谢。

【问题讨论】:

你能分享你系列中所有点的值并创建Minimal, Complete, and Verifiable example吗? 对于红色系列 (4,A) (2,B) (10,C) (8,D) (6,E) (1,F) 对于系列蓝色 (0.5,A) (9.8,B) (5.5,C) (5.3,D) (2.5,E) (4.5,F) . 但如果您愿意,您可以将参数 (A,B,C,D,E,F) 视为数值 (1,2,3,4,5,6)。例如对于红色系列 (4,1) (2,2) (10,3) (8,4) (6,5) (1,6) 对于蓝色系列 (0.5, 1) (9.8,2) (5.5,4) (5.3,4) (2.5,5) (4.5,6) @zey 您的积分值是随机创建的还是根据某种数学函数创建的? @zey 因为 c++ 实现需要 CGAL 函数,也许这个链接可以帮助你***.com/questions/4213117/… 【参考方案1】:

如果您可以直接访问 Series 集合,您可以:

var intersection = Series[0].Points.Intersect(Series[1].Points);

如果您在此过程中创建离散的 Point 对象,您可能还必须定义匹配行为。

【讨论】:

返回空值! 我认为 OP 要求几何交集。 正是@nempoBu4,我搜索了几何交集,但我无法理解,也找不到完美的解决方案。【参考方案2】:

据我了解,您的每个系列都只是连续点的集合。您只需要从每个集合中找到线段之间的交点。我建议为此目的使用 Bentley-Ottmann 算法,它允许以 (N log N) 方式找到答案(N 是两个系列的线段数)。不幸的是我不知道c#中是否有实现(任何时候你都可以使用c++实现,如果你找不到c#解决方案)

如果你总是有两个系列,由一些两个不同的函数定义,你可以以 O (N) 方式优化算法(使用“合并”逻辑)

【讨论】:

以上是关于在 devexpress 图表中找到两个系列的重叠点的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中重叠两个图表?

GRAFANA 中的多系列折线图

谷歌图表图例重叠

如何绘制两个相互重叠的图形?

请教使用DevExpress中怎么实现Real-Time Chart,多谢

DevExpress中RibbonControl的简单应用