是否可以找到JFreeChart中的两个系列的交点?相交的图表系列之间没有任何共同点。因此,需要为图中发生的彼此相交的两个系列计算交点。系列的交叉点
List<Line> lineOne = one.getItems();
List<Line> lineTwo = two.getItems();
for (Line i : lineOne) {
for (Line j : lineTwo) {
if (i.intersection(j) != null) {
System.out.println(i.intersection(j));
}
}
}
上面的代码是什么,我要怎样做,但是这将引发与此消息一ClassCastException
:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
org.jfree.data.xy.XYDataItem cannot be cast to
org.apache.commons.math3.geometry.euclidean.twod.Line
Trashgod的建议后,我曾尝试做如下:
List<XYDataItem> l1 = one.getItems();
List<XYDataItem> l2 = two.getItems();
Line itemOne = null;
Line itemTwo = null;
List<Line> lineOne = new ArrayList<Line>();
List<Line> lineTwo = new ArrayList<Line>();
//Add lines to the first list
for(int i = 0; i < l1.size(); i++){
if(i < l1.size()-1) {
itemOne = new Line(new Vector2D(l1.get(i).getXValue(),
l1.get(i).getYValue()),
new Vector2D(l1.get(i+1).getXValue(),
l1.get(i+1).getYValue()), 0);
lineOne.add(itemOne);
}
}
//Add lines to the second list
for(int i = 0; i < l2.size(); i++){
if(i < l2.size()-1) {
itemTwo = new Line(new Vector2D(l2.get(i).getXValue(),
l2.get(i).getYValue()),
new Vector2D(l2.get(i+1).getXValue(),
l2.get(i+1).getYValue()), 0);
lineTwo.add(itemTwo);
}
}
for(Line i: lineOne) {
for(Line j: lineTwo) {
if (i.intersection(j) != null) {
System.out.println(i.intersection(j));
}
}
}
但是,在遍历此列表时,即使只有很少的交点,也会产生很多结果(如下图所示)。
交点也不正确。
我的表是这样的: Image for Jfreechart
请这个建议的问题。
感谢您的回复@trashgod。但是,我拥有的数据集中并没有相同的项目。我需要找到其中没有共同数据点的两个XYLineChart系列的交集。所以我想我将无法使用equals方法。 – Yoo
我已经阐述过了;请更新您的问题以澄清此要求。 – trashgod
谢谢。你说“每个清单应该包含连接相应系列的连续点的线”。您能否详细说明一下这意味着什么?任何帮助都会很棒。 – Yoo