androidplot 从触摸中获取序列中的 Y 值
androidplot Get Y Value in Series From Touch
到目前为止,我可以像这样在图表上获得触摸的 Y 值。
mSpeedPlot.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
PointF click = new PointF(event.getX(),event.getY());
if ( mSpeedPlot.getGraphWidget().containsPoint( click )) {
Log.d("HOF","Plot X: "+DistanceValue.fromMetres(mSpeedPlot.getXVal(click).doubleValue()).km()+"km "+" Y: "+mSpeedPlot.getYVal(click)+"km/h");
}
return false;
}
});
我想要做的不仅仅是 return 触摸位置的 y 值,我想要绘制在与 x 值对应的图表上的系列的 Y 值。
有什么办法吗?
好的解决了。
我使用原来的 Number[]
来填充我的 SimpleXySeries
。这有交错的 X 和 Y 值,所以我需要以某种方式在这个 Number[]
中找到 X 值的索引,我已经使用问题中的代码检索到。
因此,我在将数据添加到此 Number[] 之前对其进行处理,主要是出于平滑和美学原因,将数据拆分为距离段。因此,为了找到触摸返回值的索引,我执行以下操作。
double xValue = mSpeedPlot.getXVal(click).doubleValue(); // gives me the value of x
int index = Double.valueOf(Math.floor(xValue / distanceSegments)).intValue()*2;
Log.d("HOF","Speed Index: "+index+" Y Value: "+speedValues[index+1]);
我将 xValue 除以 distanceSegments,因为这基本上给出了使用多少距离段来获得此 x 值。然后我将它乘以 2 因为在我的 Number[]
中 x y 值是交错的所以乘以 2 避免了 y 值。
现在我有了 x 值的索引,我可以通过在索引中加 1 轻松找到 y 值,因为这些值是交错的,所以我知道 x 之后的值是对应的 y。
到目前为止,我可以像这样在图表上获得触摸的 Y 值。
mSpeedPlot.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
PointF click = new PointF(event.getX(),event.getY());
if ( mSpeedPlot.getGraphWidget().containsPoint( click )) {
Log.d("HOF","Plot X: "+DistanceValue.fromMetres(mSpeedPlot.getXVal(click).doubleValue()).km()+"km "+" Y: "+mSpeedPlot.getYVal(click)+"km/h");
}
return false;
}
});
我想要做的不仅仅是 return 触摸位置的 y 值,我想要绘制在与 x 值对应的图表上的系列的 Y 值。
有什么办法吗?
好的解决了。
我使用原来的 Number[]
来填充我的 SimpleXySeries
。这有交错的 X 和 Y 值,所以我需要以某种方式在这个 Number[]
中找到 X 值的索引,我已经使用问题中的代码检索到。
因此,我在将数据添加到此 Number[] 之前对其进行处理,主要是出于平滑和美学原因,将数据拆分为距离段。因此,为了找到触摸返回值的索引,我执行以下操作。
double xValue = mSpeedPlot.getXVal(click).doubleValue(); // gives me the value of x
int index = Double.valueOf(Math.floor(xValue / distanceSegments)).intValue()*2;
Log.d("HOF","Speed Index: "+index+" Y Value: "+speedValues[index+1]);
我将 xValue 除以 distanceSegments,因为这基本上给出了使用多少距离段来获得此 x 值。然后我将它乘以 2 因为在我的 Number[]
中 x y 值是交错的所以乘以 2 避免了 y 值。
现在我有了 x 值的索引,我可以通过在索引中加 1 轻松找到 y 值,因为这些值是交错的,所以我知道 x 之后的值是对应的 y。