[英]How to find the nearest point to the mouse in a JFreeChart scatter plot?
我需要能夠獲取一個從MouseListener返回的點,並標識散點圖中的最近點。 我正在將JFreeChart與XYDataset一起使用。
我在ChartPanel中添加了一個鼠標偵聽器,並試圖將這些x,y值與迭代數據並檢查其位置時返回的值進行比較。 我的代碼如下所示:
ValueAxis domainAxis = chartPanel.getXYPlot().getDomainAxis();
ChartArea chartArea = chartPanel.getChartRenderingInfo().getChartArea();
for(int i=0; i < myXYData.getItemCount(0); i++) {
double mouseX = e.getX(); // e is the MouseEvent
double pointX = domainAxis.valueToJava2D(myXYData.getX(0, i), chartArea, RectangleEdge.BOTTOM);
System.out.println("difference is " + (pointX - mouseX));
}
問題在於MouseEvent報告的是相對於ChartPanel左上角的點,因此(0,0)在標題上方,在x軸標簽的左側。 但是,valueToJava2D方法提供相對於繪制值的區域的值,因此(0,0)在圖形標題下方和x軸標簽的右側。 這意味着當鼠標直接位於我的數據點之一上方時,我得到的非零差異!
我該如何解決這種差異?
謝謝,埃里克
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.