在xaxis上添加日期和MP android中的Yaxis值线图?

我使用库MPAndroid,compile 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1'在xaxis上添加日期和MP android中的Yaxis值线图?

我必须通过在x轴方向和值的日期上在MPAndroid折线图表Y轴,当我传递值x轴或y轴,则该应用被示出坠毁ArrayIndexOutOfBoundException,数组大小为-2。

如何实现这个目标?我也使用了xAxis值格式化程序。请help.Below是我的代码

{ mChart.setOnChartGestureListener(this); mChart.setOnChartValueSelectedListener(this); mChart.setDrawGridBackground(false);

mChart.setNoDataTextDescription("You need to provide data for the chart."); 

mChart.setTouchEnabled(false);

mChart.getAxisLeft().setDrawGridLines(false);

mChart.getXAxis().setDrawGridLines(false);

mChart.setDragEnabled(false);

mChart.setScaleEnabled(false);

mChart.getAxisLeft().setDrawLimitLinesBehindData(true);

XAxis xAxis = mChart.getXAxis();

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

xAxis.setLabelRotationAngle(270);

xAxis.setAxisLineWidth(3);

xAxis.setAxisMaxValue(310f);

xAxis.setTextSize(13f);

xAxis.setTextColor(Color.WHITE);

YAxis leftAxis = mChart.getAxisLeft();

leftAxis.removeAllLimitLines();

leftAxis.setAxisMaxValue(330f);

leftAxis.setAxisMinValue(50f);

leftAxis.setAxisLineWidth(3);

leftAxis.setDrawAxisLine(false);

leftAxis.setDrawGridLines(true);

leftAxis.setTextSize(13f);

leftAxis.setGranularity(1f);

leftAxis.setTextColor(Color.WHITE);

leftAxis.setDrawZeroLine(false);

leftAxis.setDrawLimitLinesBehindData(false);

mChart.getAxisRight().setEnabled(false);

mChart.animateX(2500, Easing.EasingOption.EaseInOutQuart);

mChart.invalidate();

}

private ArrayList<String> setXAxisValues() {

return typesList;

}

private ArrayList<Entry> setYAxisValues() {

float[] EndTime = new float [glucoseReportReading.length];

for (int i=0; i<glucoseReportReading.length;i++)

{

float number = Float.parseFloat(glucoseReportReading[i]);

float rounded = (int) Math.round(number * 1000)/1000f;

EndTime[i] = rounded;

}

ArrayList<Entry> yVals = new ArrayList<Entry>();

for(int i=0;i<glucoseReadingArrayList.size();i++){

yVals.add(new Entry(EndTime[i],i));

}

return yVals;

}

private void setData() {

GraphModelClass graphModelClass = new GraphModelClass();

ArrayList<Entry> yVals1 = setYAxisValues();

ArrayList<String> xVals1 = setXAxisValues();

graphModelClass.setyVals(yVals1);

graphModelClass.setxVals(xVals1);

ArrayList<String> xVals = graphModelClass.getxVals();//setXAxisValues();

ArrayList<Entry> yVals = graphModelClass.getyVals();//setYAxisValues();

LineDataSet set1;

set1 = new LineDataSet(yVals, "DataSet 1");

set1.setFillColor(Color.TRANSPARENT);

set1.setColor(Color.RED);

set1.setCircleColor(Color.BLUE);

set1.setLineWidth(2f);

set1.setCircleRadius(4f);

set1.setDrawCircleHole(true);

set1.setValueTextSize(10f);

set1.setDrawFilled(true);

/* ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();

dataSets.add(set1);*/

LineData data = new LineData(xVals,set1);

mChart.setData(data);}

回答:

使用一个AxisValueFormatter是正确的。您面临的问题是图书馆希望在图表的前后绘制标签,但无法在数组中找到值。

您可以通过检查指示符和回退空标签来解决此问题。

@Override 

public String getFormattedValue(float value, AxisBase axis) {

if (value < 0 || value > glucoseReportTime.size() - 1)

return "";

return glucoseReportTime[(int) value];

}

如果你不想空的空间可以进一步使用

XAxis xAxis = chart.getXAxis(); 

xAxis.setAxisMinimum(<yourMinum>);

xAxis.setAxisMaximum(<yourMaximum>);

回答:

替换该行之前和您的图表后:

for(int i=0;i<glucoseReadingArrayList.size();i++) 

有:

for(int i=0;i<typesList.size();i++) 

以上是 在xaxis上添加日期和MP android中的Yaxis值线图? 的全部内容, 来源链接: utcz.com/qa/261444.html

回到顶部