gpt4 book ai didi

java - JFreeChart 交互式图表编辑 : transforming mouse coordinates into series values

转载 作者:行者123 更新时间:2023-12-01 12:47:40 26 4
gpt4 key购买 nike

我有一个用 JFreeChart 构建的 XYLineChart。鉴于该图表和 ChartMouseEvent,我需要检索离鼠标单击点最近的显示系列的 X 值。

感谢previous post我已经能够使用以下方法检索灰度图的偏移量(图像中绿点的坐标)及其尺寸:

Rectangle2D greyChartArea = chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea();

我也知道显示系列的最大 X 值:

double maxXValue = seriesCollection.getDomainUpperBound(true); //where seriesCollection is an XYSeriesCollection object

XYLineChart

现在的问题是,要将鼠标坐标 (Point) 转换为图表中的相应值,我需要知道屏幕上的一个像素对应多少个单位 (double)。不幸的是,最大 X 值(在本例中为 60)和灰色图表宽度(看大蓝线)之间存在差距,因此我无法实现完美的转换。

那么我有两个问题:

  1. 如何准确计算最后显示的 x 值与整个灰度图之间的像素差距? (大蓝线长度)
  2. 我做错了什么吗?有没有更简单的方法来实现这个目标,可能避免所有这些微积分?我是 JFreeChart 新手,该库的文档还不够,所以我可能缺少一些可以帮助我的功能。

最佳答案

回顾这个example , 您可以从 ChartProgressListener 中的十字准线值中获取模型坐标.十字准线不必可见。

chartPanel.getChart().addProgressListener(new ChartProgressListener() {

@Override
public void chartProgress(ChartProgressEvent e) {
XYPlot xyPlot = (XYPlot) chartPanel.getChart().getPlot();
System.out.println(e.getType()
+ ": " + xyPlot.getDomainCrosshairValue()
+ ", " + xyPlot.getRangeCrosshairValue());
}
});

关于java - JFreeChart 交互式图表编辑 : transforming mouse coordinates into series values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com