检测到onValueSelected后,使用MPAndroidChart中的雷达图对y轴选择进行图表旋转

时间:2019-12-10 17:53:38

标签: android mpandroidchart

我正在使用MPAndroidChart的雷达图,并覆盖onValueSelected函数来检测用户何时点击雷达图的轴之一。

我希望能够更改图表的旋转度,以便在选择比例尺上的任何点时Y轴都为0度。换句话说-一旦选择了任何轴,就旋转雷达图,以使所选的轴从北向南定向。

从下面看,假设用户点击了“法国” y轴上的一个点。我希望图表能够旋转(72度* 2 = -144度),以便“法国”轴位于顶部(当前“数学”在这里)

enter image description here

据我了解,chart.rotationAngle是图表的当前旋转角度。

我假设h.xPxh.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)
        }
    }

0 个答案:

没有答案