使用MPAndroid库在条形图中设置标签不起作用

时间:2018-01-23 09:37:01

标签: java android char mpandroidchart

enter image description here我正在使用MPAndroid库。 实现'com.github.PhilJay:MPAndroidChart:v3.0.3' 我需要用标签创建BarChart。 我的代码如下,但它不起作用: 这是要显示的数组。

public ArrayList<BarEntry> getBarEntryArrayList() {

    ArrayList<BarEntry> barEntries = new ArrayList<BarEntry>();
    barEntries.add(new BarEntry(2f, 0));
    barEntries.add(new BarEntry(4f, 1));
    barEntries.add(new BarEntry(6f, 2));
    barEntries.add(new BarEntry(8f, 3));
    barEntries.add(new BarEntry(7f, 4));
    barEntries.add(new BarEntry(3f, 5));
    return barEntries;

}

这是在底部显示的标签数组。

public ArrayList<String> getBarEntryLabels() {

    ArrayList<String> BarEntryLabels = new ArrayList<String>();
    BarEntryLabels.add("J");
    BarEntryLabels.add("F");
    BarEntryLabels.add("M");
    BarEntryLabels.add("A");
    BarEntryLabels.add("M");
    BarEntryLabels.add("J");
    BarEntryLabels.add("J");
    BarEntryLabels.add("A");
    BarEntryLabels.add("S");
    BarEntryLabels.add("O");
    BarEntryLabels.add("N");
    BarEntryLabels.add("D");
    return BarEntryLabels;

}

设置标签数组和条目数组的问题

private void setBarChartData() {
    BarDataSet barDataSet = new BarDataSet(getBarEntryArrayList(), getBarEntryLabels() );
    barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
    BarData barData = new BarData(barDataSet);
    barChart.setData(barData);
    barChart.animateY(3000);

}

此行无效。

BarDataSet barDataSet = new BarDataSet(getBarEntryArrayList(), getBarEntryLabels() );

如果没有标签的make代码正在运行。

BarDataSet barDataSet = new BarDataSet(getBarEntryArrayList(), "Dummy text" );

我必须使用标签数组。 提前谢谢。

我需要像这样创建图形。 请帮帮我。

3 个答案:

答案 0 :(得分:3)

创建条形条目时,将标签添加为第三个参数:

    barEntries.add(new BarEntry(2f, 0, "J"));
    barEntries.add(new BarEntry(4f, 1, "F"));
    barEntries.add(new BarEntry(6f, 2, "M"));
    barEntries.add(new BarEntry(8f, 3, "A"));
    barEntries.add(new BarEntry(7f, 4, "M"));
    barEntries.add(new BarEntry(3f, 5, "P"));

barChart.setData(barData);之后,您可以使用setValueFormatter

在条形图上方或下方设置标签
    barChart.getBarData().setValueFormatter(new IValueFormatter() {
        @Override
        public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
            return entry.getData().toString();
        }
    });

同时增加字体大小:

barChart.getData().setValueTextSize(15);

P.S。你不需要getBarEntryLabels方法。

结果如下:

enter image description here

答案 1 :(得分:1)

您需要执行以下操作:

barChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(BarEntryLabels));

快乐编码:)

答案 2 :(得分:0)

您可以按照以下方式进行设置,

在科特林,

val xAxis = chart.xAxis
xAxis.valueFormatter = IndexAxisValueFormatter(labels)

如果仍然遇到问题,请确保您尚未隐藏x轴。如果要隐藏x轴,将不会显示标签。如果要隐藏x轴,则必须使x轴可见并为其提供透明颜色。