Невозможно установить / показать метки по оси X в последней версии диаграммы AndroidAndroid с диаграммой StackedBar - PullRequest
0 голосов
/ 02 июля 2019

Я реализую столбчатую диаграмму с накоплением из библиотеки MPAndroid Chart, но она не позволяет мне добавлять метки оси X, а также отображает другой цвет для небольшого количества данных. Мой код как:

    private void setStackChartData() {
    stackedChart.setOnChartValueSelectedListener(this);
    stackedChart.getDescription().setEnabled(false);

    // if more than 60 entries are displayed in the chart, no values will be
    // drawn
    stackedChart.setMaxVisibleValueCount(40);

    // scaling can now only be done on x- and y-axis separately
    stackedChart.setPinchZoom(false);

    stackedChart.setDrawGridBackground(false);
    stackedChart.setDrawBarShadow(false);

    stackedChart.setDrawValueAboveBar(false);
    stackedChart.setHighlightFullBarEnabled(false);

    // change the position of the y-labels
    YAxis leftAxis = stackedChart.getAxisLeft();
 //   leftAxis.setValueFormatter(new MyValueFormatter("K"));
    leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
    stackedChart.getAxisRight().setEnabled(false);

    XAxis xLabels = stackedChart.getXAxis();
    xLabels.setPosition(XAxis.XAxisPosition.TOP);


    Legend l = stackedChart.getLegend();
    l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
    l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
    l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
    l.setDrawInside(false);
    l.setFormSize(8f);
    l.setFormToTextSpace(4f);
    l.setXEntrySpace(6f);

    setStackedChart();

}

private void  setStackedChart(){

    final ArrayList<String> xAxisLabel = new ArrayList<>();
    xAxisLabel.add("Mon");
    xAxisLabel.add("Tue");
    xAxisLabel.add("Wed");
    xAxisLabel.add("Thu");
    xAxisLabel.add("Fri");
    xAxisLabel.add("Sat");
    xAxisLabel.add("Sun");

    ArrayList<BarEntry> values = new ArrayList<>();

    for (int i = 0; i < 12; i++) {
        float mul = (30 + 1);
        float val1 = (float) (Math.random() * mul) + mul / 3;
        float val2 = (float) (Math.random() * mul) + mul / 3;
       // float val3 = (float) (Math.random() * mul) + mul / 3;

        values.add(new BarEntry(
                i,
                new float[]{val1, val2},
                getResources().getDrawable(R.drawable.ic_expand_less)));
    }

    BarDataSet set1;

    if (stackedChart.getData() != null &&
            stackedChart.getData().getDataSetCount() > 0) {
        set1 = (BarDataSet) stackedChart.getData().getDataSetByIndex(0);
        set1.setValues(values);
        stackedChart.getData().notifyDataChanged();
        stackedChart.notifyDataSetChanged();
    } else {
        set1 = new BarDataSet(values, "");
        set1.setDrawIcons(false);
        set1.setColors(getColors());
        set1.setStackLabels(new String[]{"Births", "Divorces"});

        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(set1);

        BarData data = new BarData(dataSets);
        data.setValueFormatter(new StackedValueFormatter(false, "", 1));
        data.setValueTextColor(Color.WHITE);

        stackedChart.setData(data);
    }

    stackedChart.setFitBars(true);
    stackedChart.invalidate();

}

Я пробовал разные способы, но другие решения устарели, поэтому не могу их применить. Надеюсь, вы получите мою проблему. Заранее спасибо.

...