Ich habe MP LineChart implementiert. Alles funktioniert bis auf eins. Es fügt den ersten Monat am Ende der x-Achse hinzu. und Werte beginnen mit dem zweiten Punkt, nicht mit dem ersten. Ich habe mehrere Lösungen auf Google versucht, konnte aber nicht erfolgreich sein. z. B. im folgenden Screenshot meine Monatsliste enthält [apr, mai, jun, jul, aug], aber seine Zugabe in extra apr am Ende und Linie beginnt ab Mai nicht apr. Folgendes ist mein Code.MP-Diagramm mit einem zusätzlichen Wert an X_axis in Liniendiagramm angezeigt?
String[] mMonths;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_multi_line_chart);
context = this;
mpref = new MySharedPreferences(this);
charts_list = new ArrayList<Charts_Data_Model>();
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
mChart.setDrawGridBackground(false);
mChart.setDescription("VSC CHART");
mChart.setDrawBorders(false);
mChart.getAxisLeft().setEnabled(true);
mChart.getAxisRight().setDrawAxisLine(false);
mChart.getAxisRight().setEnabled(false);
mChart.getAxisRight().setDrawGridLines(false);
mChart.getXAxis().setDrawAxisLine(true);
mChart.getXAxis().setDrawGridLines(true);
// enable touch gestures
mChart.setTouchEnabled(true);
// enable scaling and dragging
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
// if disabled, scaling can be done on x- and y-axis separately
mChart.setPinchZoom(true);
Legend l = mChart.getLegend();
l.setPosition(Legend.LegendPosition.ABOVE_CHART_LEFT);
l.setXEntrySpace(7f);
l.setYEntrySpace(0f);
l.setYOffset(0f);
l.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);
l.setWordWrapEnabled(true);
new Task4().execute();
}
class Task4 extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(MultiLineChartActivity.this);
pDialog.setMessage("please wait");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0) {
getChartDataHadsM();
//Record method
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinValue(0f);
xAxis.setAvoidFirstLastClipping(true);
// xAxis.setGranularityEnabled(false);
xAxis.setGranularity(1f);
xAxis.setValueFormatter(new AxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mMonths[(int) value % mMonths.length];
}
@Override
public int getDecimalDigits() {
return 0;
}
});
LineData data = new LineData(sets);
mChart.setData(data);
mChart.invalidate();
pDialog.dismiss();
}
}
public void getChartDataHadsM() {
mMonths = new String[charts_list_HadsM.size()];
ArrayList<Entry> e1 = new ArrayList<Entry>();
ArrayList<Entry> e2 = new ArrayList<Entry>();
int size = charts_list_HadsM.size();
for (int i = 0; i < size; i++) {
String month = charts_list_HadsM.get(i).month;
mMonths[i] = month;
String anx = charts_list_HadsM.get(i).anx;
String dep = charts_list_HadsM.get(i).dep;
e1.add(new Entry(i + 1, Integer.parseInt(anx)));
e2.add(new Entry(i + 1, Integer.parseInt(dep)));
}
sets = new ArrayList<ILineDataSet>();
if (!e1.isEmpty()) {
LineDataSet d1 = new LineDataSet(e1, "anxiety");
d1.setLineWidth(2.5f);
d1.setCircleRadius(4.5f);
d1.setHighLightColor(Color.rgb(244, 117, 117));
d1.setDrawValues(false);
sets.add(d1);
}
if (!e2.isEmpty()) {
LineDataSet d2 = new LineDataSet(e2, "depression");
d2.setLineWidth(2.5f);
d2.setCircleRadius(4.5f);
d2.setHighLightColor(Color.rgb(244, 117, 117));
d2.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setDrawValues(false);
sets.add(d2);
}
}
Bitte Jede mögliche Tipp oder Hilfe geschätzt.
thnx Sie gerade meinen Tag gerettet. –