私はMP LineChartを実装しました。 one以外のものはすべて動作しています.x軸の最後に最初の月が追加されます。値は最初のものから2番目の点から始まります。私はいくつかのソリューションをGoogleで提供したが、成功することはできませんでした。 たとえば、次のスクリーンショットでは、私の月リストに[apr、may、jun、jul、aug]が含まれていますが、末尾と行の余分なaprの追加はaprではないかもしれません。 以下は私のコードです。折れ線グラフのX_axisに1つ余分な値を表示したMPチャート?
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);
}
}
任意のヒントやヘルプをいただければ幸いしてください。
。 –