上个月,我使用mpandroidchart,在androidstudio上通过web服务连接动态生成图形。
以前,我用bardata做这个,现在我用的是组合数据。。。
在上一个测试中,我创建了4个数组,其中包含每个图形参数(date,x,y,)的值,但我需要您的帮助来修复它。。
这是我用来创建bardata的方法,通过从数组返回来传递参数方法。
ArrayList<BarEntry> listaValoresAcima = new ArrayList<>();
ArrayList<BarEntry> listaValoresAbaixo = new ArrayList<>();
Float itemReal;
Float itemMeta;
if (String.valueOf(valoresReal.size()).equals(String.valueOf(valoresMeta.size()))) {//Compare two arrays to get item by the same for loop position
int index = 0; // (position for)
for (int position = 0; position < valoresReal.size(); position++) {
itemReal = valoresReal.get(position);
itemMeta = valoresMeta.get(position);
float f = (float) 16.2f;
//In this situation, i go set the float value to generate the graph
// if (itemReal >= itemMeta) {
// listaValoresAcima.add(new BarEntry(index + 0.5f, itemReal));//the problem is here
// listaValoresAbaixo.add(new BarEntry(index + 1.0f, 0));
// } else {
// listaValoresAbaixo.add(new BarEntry(index + 1.0f, itemReal));
// listaValoresAcima.add(new BarEntry(index + 0.5f, 0));
// }
listaValoresAbaixo.add(new BarEntry(index + 1.0f, itemReal));
listaValoresAcima.add(new BarEntry(index + 0.5f, itemReal));
index = index + 1;
}
}
//REAL
BarDataSet barDataAcima = new BarDataSet(listaValoresAcima, "Acima");//Acima
barDataAcima.setStackLabels(new String[]{"Stack 1"});
//COLUNAS
barDataAcima.setColor(Color.rgb(0, 0, 255));//Azul
//TEXTO
barDataAcima.setValueTextColor(Color.rgb(0, 0, 255));
barDataAcima.setValueTextSize(10f);
//barDataAcima.setAxisDependency(YAxis.AxisDependency.LEFT);
//META
BarDataSet barDataAbaixo = new BarDataSet(listaValoresAbaixo, "Abaixo");//Abaixo / Verm.
barDataAbaixo.setStackLabels(new String[]{"Stack 1"});
//COLUNAS
barDataAbaixo.setColor(Color.rgb(255, 0, 0));//Vermelho
//TEXTO
barDataAbaixo.setValueTextColor(Color.rgb(255, 0, 0));//Vermelho
barDataAbaixo.setValueTextSize(10f);
barDataAbaixo.setAxisDependency(YAxis.AxisDependency.LEFT);
float groupSpace = 0.06f;
float barSpace = 0.02f; // x2 dataset
float barWidth = 0.45f; // x2 dataset
BarData d = new BarData();
d.addDataSet(barDataAbaixo);
d.addDataSet(barDataAcima);
d.setBarWidth(barWidth);
d.groupBars(0, groupSpace, barSpace); // start at x = 0
return d;
}
返回图形:
双值图
在第二种情况下,我看到不可能传递双值来生成图,我尝试了这个但是没有带点精度浮点值的图,比如“1.0”、“2.25”返回整数
private BarData generateBarData(ArrayList<String> valoresReal) {
ArrayList<BarEntry> listaValoresMeta = new ArrayList<>();
ArrayList<BarEntry> listaValoresReal = new ArrayList<>();
for (int y = 0; y < count; y++) {
// listaValoresMeta.add(new BarEntry(y + 0.5f, y + 10));
String itemReal2 = (valoresReal.get(y));// = "12.0f"
float f3 = Float.parseFloat(itemReal2);// = "12.0"
if (y <= 5) {
结果是:
仅含int值的图
我不知道如何解决这个问题,我想得到浮点值和concat上的最终点的精度,但不工作太多。
暂无答案!
目前还没有任何答案,快来回答吧!