2016-05-18 21 views
1

我用相应的X和Y轴绘制了图。如何在android mpchart中获取Y轴标签?

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

对于如:

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

如果是2,则表示低。 如果是10,那么高。 如果是15,那么非常高。 然后最重要的是至高无上的。

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

enter image description here

对于例如:

代替2在左,右Y轴,我需要显示为低于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轴标签中显示为低。那么如何在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

如果需要更改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; 
     } 
    }); 
相关问题