如何在android mpchart中获取Y轴标签?

时间:2016-05-18 07:30:22

标签: android charts bar-chart mpandroidchart

我用相应的X轴和Y轴绘制了图形。

现在如何获取Y轴标签并比较并在Y轴上放置另一个标签。

例如:

我得到的Y轴标签是1,2,3,4,5等。现在如何为相应的标签分配,

如果它是2,那么低。 如果它是10,那么高。 如果它是15,那么非常高。 然后最重要的是。

所以我的问题是如何获得Y轴标签,然后更改并分配它? 是否可以在y轴上使用字符串?

enter image description here

例如:

在左右y轴上代替2,我需要在Y轴上显示为低。以及如何删除显示图表中的数字?即2.00

这是一段代码。

  List<BarEntry> entries = new ArrayList<>();
    ArrayList<String> labels = new ArrayList<String>();
    mDetectiveGraphExecutor = new DetectiveGraphExecutor(this);
    barChart = (BarChart) findViewById(R.id.chart);
    YAxis leftAxis = barChart.getAxisRight();
    leftAxis.removeAllLimitLines();
    barChart.setDescription("");
    leftAxis.setEnabled(false);
    ViewPortHandler handlers = barChart.getViewPortHandler();
    handlers.setMaximumScaleX(10);
entries.add(new BarEntry(activities.size(), ++columnIndex)); //list of datas displaying.. 
        labels.add("Time");
        BarDataSet dataset = new BarDataSet(entries, "# Counts");
        BarData data = new BarData(labels, dataset);
        barChart.setData(data);

2 个答案:

答案 0 :(得分:1)

尝试覆盖Y轴渲染器。 这是一个例子:

setRendererRightYAxis(new YAxisRenderer(mViewPortHandler, mAxisRight, mRightAxisTransformer)
    {
        @Override
        protected void drawYLabels(Canvas c, float fixedPosition, float[] positions, float offset)
        {
            ArrayList<String> yLabels = new ArrayList<>();
            yLabels.add("10 " + getResources().getString(R.string.low));
            yLabels.add("20 " + getResources().getString(R.string.medium));
            yLabels.add("30 " + getResources().getString(R.string.high));

            for (int i = 0; i < _yLabels.size(); i++)
            {
                c.drawText(yLabels.get(i), fixedPosition, positions[i * 2 + 1] + offset, mAxisLabelPaint);
            }
        }
    });

另一种选择就是覆盖值格式化器,所以对于你的例子 -

getAxisRight().setValueFormatter(new YAxisValueFormatter()
    {
        @Override
        public String getFormattedValue(float value, YAxis yAxis)
        {
            if(value == 0)
            {
                return getResources().getString(R.string.low));
            }
            else if(value == 1)
            {
                return getResources().getString(R.string.medium));
            }
            else
            {
                return getResources().getString(R.string.high));
            }
        }
    });

答案 1 :(得分:0)

如果您需要更改y轴中的值,请使用此代码

YAxis yAxis = water_graph.getAxisLeft(); //左侧值更改

YAxis yAxis = water_graph.getAxisRight(); //用于右侧值更改

 yAxis.setGranularityEnabled(true);
 yAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            String str="";
            if(value<5)
                str="Low";
            else if(value<10)
                str="Medium";
            else if(value==10)
                str="high";
            else
                str="very high";
            return str;
        }
    });