Anychart Android 极坐标图 xAxis 标签将它们更改为 char 字符串

Anychart Android polar plot xAxis labels change them to char strings

早上好,

我试图在 android (https://github.com/AnyChart/AnyChart-Android) which should look something similar to this (https://playground.anychart.com/gallery/Polar_Charts/Line_Polar_Chart) 中实现 AnyChart 极坐标图。我知道这个例子在 javascript 中,我在 Android 中开发它,这并不完全相同,但保留对我想要实现的结果的引用很好。

从那个例子开始,我一直在努力将 xAxis Labels (0°, 30°, ...) 更改为自定义字符串,例如 ("Zero", "Thirty",. ..). 我没能找到一个 xAxis 标签 getter 其中 returns 标签字符串 (https://api.anychart.com/v8/anychart.core.ui.LabelsFactory#getLabel) 但没能找到标签 setter...

我的目标是保留 Anychart 极坐标图的数值功能,其中可以绘制一条从 (45°,值 1) 到 (45°,值 5) 的线,并在 xlabel 处显示字符情节,所以不是看到标签的“45°”,它应该说 "fourty-five"

有人知道这是否可以实现吗? 非常感谢!

您可以使用 xAxis 标签的 format() 函数来实现。在回调函数中,您可以实现自己的逻辑,将数字转换为单词(if、case、hashmap 等)。该片段描述了如何实现这一目标。

        AnyChartView anyChartView = findViewById(R.id.any_chart_view);

        Polar polar = AnyChart.polar();

        List<DataEntry> data = new ArrayList<>();
        data.add(new ValueDataEntry(0, 10));
        data.add(new ValueDataEntry(15, 8));
        data.add(new ValueDataEntry(30, 12));
        data.add(new ValueDataEntry(45, 11));

        Set set = Set.instantiate();
        set.data(data);
        Mapping series1Data = set.mapAs("{ x: 'x', value: 'value' }");

        polar.line(series1Data);

        Linear scale = Linear.instantiate();
        scale.minimum(0).maximum(360);
        scale.ticks().interval(30);
        polar.xScale(scale);

        polar.xAxis().labels().format("function() {" +
                "if (this.tickValue == 60) return 'sixty';" +
                "if (this.tickValue == 90) return 'ninety';" +
                "if (this.tickValue == 120) return 'hundred twenty';" +
                "return this.tickValue;" +
                "}");

        anyChartView.setChart(polar);

结果如下: