我用相应的X轴和Y轴绘制了图形。
现在如何获取Y轴标签并比较并在Y轴上放置另一个标签。
例如:
我得到的Y轴标签是1,2,3,4,5等。现在如何为相应的标签分配,
如果它是2,那么低。 如果它是10,那么高。 如果它是15,那么非常高。 然后最重要的是。
所以我的问题是如何获得Y轴标签,然后更改并分配它? 是否可以在y轴上使用字符串?
例如:
在左右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);
答案 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;
}
});