【问题标题】:x-axis values not showing all in stacked bar chartx 轴值未在堆积条形图中全部显示
【发布时间】:2018-07-09 09:48:08
【问题描述】:

您可以在下面找到屏幕截图以及我的代码;

代码如下;

      mChart = view.findViewById(R.id.bar_chart);
        barWidth = 0.3f;
        barSpace = 0.02f;
        groupSpace = 0.4f;

        mChart.setDescription(null);
        mChart.setPinchZoom(false);
        mChart.setScaleEnabled(false);
        mChart.setDrawBarShadow(false);
        mChart.setDrawGridBackground(false);

        mChart.getAxisLeft().setDrawGridLines(false);
        mChart.getXAxis().setDrawGridLines(false);
        mChart.setBackgroundColor(Color.TRANSPARENT); 

        ArrayList<BarEntry> yValues = new ArrayList<>();
        yValues.add(new BarEntry(5, new float[]{10, 20, 30, 50}));
        yValues.add(new BarEntry(15, new float[]{12, 13}));
        yValues.add(new BarEntry(25, new float[]{15, 15}));
        yValues.add(new BarEntry(35, new float[]{17, 17}));

        BarDataSet set = new BarDataSet(yValues, "");
        set.setColors(new int[]{Color.rgb(67, 67, 72), Color.rgb(124, 181, 236),
                Color.rgb(124, 181, 236), Color.rgb(124, 181, 236)});
        set.setStackLabels(new String[]{
                "Men", "Women", "fgdgfx", "gfdrhd"
        });
        BarData data = new BarData(set);
        data.setBarWidth(1.9f);
        mChart.setData(data);
        mChart.invalidate();

        final ArrayList xVals = new ArrayList();
        xVals.add("New");
        xVals.add("Accepted");
        xVals.add("Completed");
        xVals.add("Cancelled");

        XAxis xAxis = mChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

        xAxis.setTextColor(Color.RED);
        xAxis.setDrawAxisLine(true);
        xAxis.setDrawGridLines(false);
        xAxis.setCenterAxisLabels(true);
        xAxis.setAxisMinimum(0.4f);
        xAxis.setGranularity(4f);
        xAxis.setValueFormatter(new IndexAxisValueFormatter(xVals));

        mChart.getAxisRight().setEnabled(false);
        YAxis leftAxis = mChart.getAxisLeft();
        leftAxis.setValueFormatter(new LargeValueFormatter());
        leftAxis.setDrawGridLines(false);
        leftAxis.setSpaceTop(35f);
        leftAxis.setAxisMinimum(0f);
        leftAxis.setGranularity(1.0f);
        leftAxis.setGranularityEnabled(true);

        Legend l = mChart.getLegend();
        l.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT);
        l.setWordWrapEnabled(true);

【问题讨论】:

  • 您使用的是哪个图表库?
  • 我正在使用 MPAndroidChart
  • 我想在 x 轴上显示 4 个值,但它只显示单个值
  • 好吧其实我得到了另一个库的解决方案。这就是为什么问你。
  • 这是一个愚蠢的事情,但你可以试试xVals.add("New"); xVals.add("Acc"); xVals.add("Com"); xVals.add("Can");

标签: android kotlin bar-chart


【解决方案1】:

问题是float value 是在Formatter 的getFormattedValue 方法中得到的。您得到的值是 (0,10,20,30) 并且您为 x 轴的值提供的数组的大小仅为 4。这就是为什么它只打印第一个 x 值而不是其余的。

请按以下方式更改您的代码。

    xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            try {
                return xVals.get((int) (value / 10));//dividing the value by 10 to get the multiplied value.
            } catch (Exception e){
                return "";
            }
        }
    });

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    相关资源
    最近更新 更多