在xaxis上添加日期和MP android中的Yaxis值线图?
我使用库MPAndroid,compile 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1'
在xaxis上添加日期和MP android中的Yaxis值线图?
我必须通过在x轴方向和值的日期上在MPAndroid折线图表Y轴,当我传递值x轴或y轴,则该应用被示出坠毁ArrayIndexOutOfBound
Exception
,数组大小为-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