我正在使用MPAndroidChart的雷达图,并覆盖onValueSelected函数来检测用户何时点击雷达图的轴之一。
我希望能够更改图表的旋转度,以便在选择比例尺上的任何点时Y轴都为0度。换句话说-一旦选择了任何轴,就旋转雷达图,以使所选的轴从北向南定向。
从下面看,假设用户点击了“法国” y轴上的一个点。我希望图表能够旋转(72度* 2 = -144度),以便“法国”轴位于顶部(当前“数学”在这里)
据我了解,chart.rotationAngle
是图表的当前旋转角度。
我假设h.xPx
和h.yPx
是屏幕上选择的点,并且画布坐标从x=0, y=0
的左上方开始。
我认为我可能可以使用h.xPx/h.yPx
(选定点),然后从屏幕x=viewport / 2, y=0 (top center)
的中心点开始计算旋转。然后,这可以给我度数以旋转雷达视图。看到这个previous answer,我从那里了解了数学。
但是我似乎只是稍微旋转视图。
override fun onValueSelected(e: Entry?, h: Highlight?) {
chart.highlightValue(h)
var fromRotation = chart.rotationAngle
var toRotation = (atan2(h.yPx.toDouble() - 0, h.xPx.toDouble() - (chart.viewPortHandler.scaleX / 2)) * 180 / Math.PI).toFloat()
chart.spin(1000, fromRotation, toRotation, Easing.EaseInCubic)
}
}