JavaFX:如何在 XY 线图的 Y 轴上正确实现 `getValueForDisplay()`?
JavaFX: How to correctly implement `getValueForDisplay()` on Y Axis of a XY line Graph?
我正在尝试在折线图上实现工具提示以显示 X 轴和 Y 轴的值,我在 X 轴上正确获取值,但 Y 轴值计算不正确。我试着做数学,但到目前为止,当我们调整 window 的大小时,值变得不正确没有任何帮助。有什么逻辑可以帮助我们正确计算 Y 轴上的值吗?
// lineChart is an object of AreaChart Or XYChart
lineChart.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Tooltip t= new Tooltip("X:"+lineChart.getXAxis().getValueForDisplay(event.getX()-lineChart.getXAxis().getLayoutX())+", Y:"+
lineChart.getYAxis().getValueForDisplay(event.getY()));
t.show(stage);
}
});
这应该可以满足您的需求:
public void handle(MouseEvent event) {
Point2D pointInScene = new Point2D(event.getSceneX(), event.getSceneY());
Axis<Number> xAxis = lineChart.getXAxis();
Axis<Number> yAxis = lineChart.getYAxis();
double xPosInAxis = xAxis.sceneToLocal(new Point2D(pointInScene.getX(), 0)).getX();
double yPosInAxis = yAxis.sceneToLocal(new Point2D(0, pointInScene.getY())).getY();
double x = xAxis.getValueForDisplay(xPosInAxis).doubleValue();
double y = yAxis.getValueForDisplay(yPosInAxis).doubleValue();
Tooltip t = new Tooltip("X: "+x+", Y:"+y);
t.show(stage);
}
我正在尝试在折线图上实现工具提示以显示 X 轴和 Y 轴的值,我在 X 轴上正确获取值,但 Y 轴值计算不正确。我试着做数学,但到目前为止,当我们调整 window 的大小时,值变得不正确没有任何帮助。有什么逻辑可以帮助我们正确计算 Y 轴上的值吗?
// lineChart is an object of AreaChart Or XYChart
lineChart.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Tooltip t= new Tooltip("X:"+lineChart.getXAxis().getValueForDisplay(event.getX()-lineChart.getXAxis().getLayoutX())+", Y:"+
lineChart.getYAxis().getValueForDisplay(event.getY()));
t.show(stage);
}
});
这应该可以满足您的需求:
public void handle(MouseEvent event) {
Point2D pointInScene = new Point2D(event.getSceneX(), event.getSceneY());
Axis<Number> xAxis = lineChart.getXAxis();
Axis<Number> yAxis = lineChart.getYAxis();
double xPosInAxis = xAxis.sceneToLocal(new Point2D(pointInScene.getX(), 0)).getX();
double yPosInAxis = yAxis.sceneToLocal(new Point2D(0, pointInScene.getY())).getY();
double x = xAxis.getValueForDisplay(xPosInAxis).doubleValue();
double y = yAxis.getValueForDisplay(yPosInAxis).doubleValue();
Tooltip t = new Tooltip("X: "+x+", Y:"+y);
t.show(stage);
}