Anychart Android полярный график метки xAxis меняют их на строки символов - PullRequest
0 голосов
/ 14 апреля 2020

Доброе утро,

Я пытался реализовать полярный график AnyChart в android (https://github.com/AnyChart/AnyChart-Android), который должен выглядеть примерно так (https://playground.anychart.com/gallery/Polar_Charts/Line_Polar_Chart ). Я знаю, что этот пример находится в javascript, и я разрабатываю его в пределах Android, что не совсем то же самое, но хранить ссылку на результат, которого я хочу достичь, прекрасно.

Из этого примера Я изо всех сил пытался изменить метки xAxis (0 °, 30 °, ...) на заказные строки, такие как ("Ноль", "Тридцать", ...). Мне не удалось найти получатель меток xAxis, который возвращает строку метки (https://api.anychart.com/v8/anychart.core.ui.LabelsFactory#getLabel), но я не смог найти установщик меток ...

Моя цель была бы сохранить числовую функциональность всего полярного графика Anychart, где можно построить линию от (45 °, значение 1) до (45 °, значение 5) и отобразить символы в xlabel графика, так что вместо того, чтобы видеть " Под углом 45 ° к этикетке должно быть написано «сорок пять»

У кого-нибудь есть идеи, достижимо ли это? Большое спасибо!

1 Ответ

0 голосов
/ 15 апреля 2020

Этого можно добиться, используя функцию format() меток xAxis. В функции обратного вызова вы можете реализовать свой собственный лог c о том, как переводить числа в слова (if, case, hashmap, et c). Фрагмент описывает, как этого добиться.

        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);

Ниже приведен результат: enter image description here

...