I am trying to set a value on X axis as month but the y value are not corresponding to x value that I am trying to set.
private void CreateGraph() {
float[] yDataL = {30, 60, 500,231};
String[] xDataL = {"Jan", "Feb" , "Mac" , "Apr"};
LineChart lineChart = (LineChart) findViewById(R.id.chart);
ArrayList<Entry> yEntrys = new ArrayList<>();
final ArrayList<String> xEntrys = new ArrayList<>();
for(int i = 0; i < yData.length; i++){
yEntrys.add(new Entry(i, yData[i]));
}
for(int i = 1; i < xData.length; i++){
xEntrys.add(xData[i]);
}
LineDataSet dataSet = new LineDataSet(yEntrys, "");
dataSet.setColor(Color.parseColor("#7500ca"));
dataSet.setCircleColor(Color.parseColor("#7500ca"));
dataSet.setLineWidth(1f);
dataSet.setCircleRadius(5f);
dataSet.setDrawCircleHole(false);
dataSet.setDrawValues(false);
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xEntrys.get((int) value % xEntrys.size());
}
});
YAxis rightAxis = lineChart.getAxisRight();
rightAxis.setEnabled(false);
LineData pieData = new LineData(dataSet);
lineChart.getXAxis().setDrawGridLines(false);
lineChart.getAxisLeft().setDrawGridLines(false);
lineChart.getAxisRight().setDrawGridLines(false);
lineChart.getAxisLeft().setDrawAxisLine(false);
lineChart.getAxisRight().setDrawAxisLine(false);
lineChart.getAxisLeft().setDrawLabels(false);
lineChart.getAxisRight().setDrawLabels(false);
lineChart.getLegend().setEnabled(false);
lineChart.setDescription(null);
lineChart.setData(pieData);
lineChart.invalidate();
}
this is the result that i got result image
i think i got it wrong on xAxis.setValueFormatter part
i also want to archive a line below the graph like this one image of line below graph