2016-05-18 3 views
1

Я построил график с соответствующими осями X и Y.Как получить метку оси Y в android mpchart?

Теперь, как получить метку оси Y, сравнить и поместить другую метку по оси Y.

Для например:

Y оси ярлык, который я получил, 1,2,3,4,5 и так далее. Теперь Как назначить для соответствующей метки как,

Если это 2, то низкий. Если это 10, то высокий. Если это 15, то очень высокий. , а затем, прежде всего, являются высшими.

Итак, мой вопрос заключается в том, как получить метку оси Y, а затем изменить и назначить ее? Можно ли использовать строки по оси y?

enter image description here

Для например:

Вместо 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); 
+0

Вы хотите изменить метки Y-оси от чисел до строк или что вы хотите комбинировать числа и строки по оси y? – NezSpencer

+0

Я хочу изменить это число на строку. Почему я спрашиваю, например: если это ось оси y равна 5, мне нужно показать как низкую метку оси слева и справа. Итак, как отобразить это «низкое» по оси y. – Shadow

ответ

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)); 
      } 
     } 
    }); 
0

Если вам необходимо изменить значение в оси у, то используйте этот код

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; 
     } 
    });