X轴标签未显示,使用MPAndroidChart

时间:2017-07-19 18:19:55

标签: java android mpandroidchart

我希望在我的线图上有x轴标签(使用MPAndroidChart),但无论我做什么,我都无法显示它们。我有一个名为setupChart的方法,它处理该图表的所有内容,这就是它的样子:

private void setupChart(LineChart chart, LineData data, int color) {

    ((LineDataSet) data.getDataSetByIndex(0)).setCircleColorHole(Color.WHITE);
    ((LineDataSet) data.getDataSetByIndex(0)).setCircleColor(color);
    ((LineDataSet) data.getDataSetByIndex(0)).setColors(dataColors);
    data.getDataSetByIndex(0).setAxisDependency(YAxis.AxisDependency.LEFT);
    ((LineDataSet) data.getDataSetByIndex(0)).setDrawCircles(false);

    // no description text
    chart.getDescription().setEnabled(false);

    // mChart.setDrawHorizontalGrid(false);
    //
    // enable / disable grid background
    chart.setDrawGridBackground(false);

    // enable touch gestures
    chart.setTouchEnabled(true);

    // disable scaling and dragging
    chart.setDragEnabled(false);
    chart.setScaleEnabled(false);
    chart.setAutoScaleMinMaxEnabled(false);
    // if disabled, scaling can be done on x- and y-axis separately
    chart.setPinchZoom(false);
    chart.setBackgroundColor(Color.parseColor("#dddddd"));

    // set custom chart offsets (automatic offset calculation is hereby disabled)
    chart.setViewPortOffsets(10, 0, 10, 0);
    // add data
    chart.setData(data);

    // get the legend (only possible after setting data)
    Legend l = chart.getLegend();
    l.setEnabled(false);

    chart.getAxisLeft().setEnabled(false);

    chart.getAxisRight().setEnabled(false);
    chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    chart.getXAxis().setEnabled(false);
    chart.getXAxis().setDrawLabels(true);
    chart.getXAxis().setTextColor(context.getResources().getColor(R.color.colorPrimary));
    chart.getXAxis().setTypeface(Typeface.SANS_SERIF);
    YAxis yAxis = chart.getAxisLeft();
    yAxis.setAxisMinimum(0f);
    yAxis.setAxisMaximum(100f);

    final String[] weeks = new String[52];

    for(int i = 0; i < weeks.length; i++) weeks[i] = "Week " + (i+1);

    IAxisValueFormatter formatter = new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return weeks[(int) value];
        }
    };

    XAxis xAxis = chart.getXAxis();
    xAxis.setGranularity(1f);
    xAxis.setValueFormatter(formatter);
    // animate calls invalidate()...
    chart.animateXY(2000,2500);
}

我不确定我做错了什么。

3 个答案:

答案 0 :(得分:2)

我通过增加偏移来解决这个问题:

chart.setViewPortOffsets(60, 0, 50, 60);

答案 1 :(得分:1)

我的图表未显示x轴和y轴。我删除了这条线,出现了x轴和y轴。

当此行存在lineChart.setViewPortOffsets(0,0,0,0)时,图表看起来像这样

enter image description here

当我删除此行lineChart.setViewPortOffsets(0,0,0,0)时,图表看起来像这样

enter image description here

答案 2 :(得分:1)

linechart.setExtraBottomOffset(ff)

修改偏移量也有助于解决此问题。

调整(ff)浮点值以获得所需的空间。