
this.barChart = (barChart) vIEw.findVIEwByID(R.ID.bar_fragment_bar_chart);this.barChart.setDrawYValues(true);this.barChart.setDrawXLabels(false);this.barChart.setDrawValueAbovebar(true);this.barChart.setDrawborder(false);this.barChart.setDrawGrIDBackground(false);this.barChart.setDrawHorizontalGrID(true);this.barChart.setDrawVerticalGrID(false);this.barChart.setDrawbarShadow(false);this.barChart.setDescription("");this.barChart.setNoDataTextDescription("");this.barChart.set3DEnabled(false); 我的xValues是简单的日期:
ArrayList<String> xValues = new ArrayList<String>();for(int i = 0; i < measureDataListEntry.size(); i++) { String StringValue = measureDataListEntry.get(i).getTime(); Long value = Long.parseLong(StringValue) * 1000; DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy",Locale.GERMAN); String date = dateFormat.format(new Date(value)); xValues.add(date);} 现在我有多个数据集:
ArrayList<barEntry> yValuesMonday = new ArrayList<barEntry>();ArrayList<barEntry> yValuesTuesday = new ArrayList<barEntry>();ArrayList<barEntry> yValuesWednesday = new ArrayList<barEntry>();ArrayList<barEntry> yValuesThursday = new ArrayList<barEntry>();ArrayList<barEntry> yValuesFrIDay = new ArrayList<barEntry>();ArrayList<barEntry> yValuesSaturday = new ArrayList<barEntry>();ArrayList<barEntry> yValuesSunday = new ArrayList<barEntry>();for(int i = 0; i < measureDataListEntry.size(); i++) { String stringValue = measureDataListEntry.get(i).getValue(); int dayOfWeek = Helper.getDayOfWeek(measureDataListEntry.get(i).getTime()); float value = float.parsefloat(stringValue); switch(dayOfWeek) { case Calendar.MONDAY: yValuesMonday.add(new barEntry(value,i)); break; case Calendar.TUESDAY: yValuesTuesday.add(new barEntry(value,i)); break; case Calendar.WednESDAY: yValuesWednesday.add(new barEntry(value,i)); break; case Calendar.THURSDAY: yValuesThursday.add(new barEntry(value,i)); break; case Calendar.FRIDAY: yValuesFrIDay.add(new barEntry(value,i)); break; case Calendar.SATURDAY: yValuesSaturday.add(new barEntry(value,i)); break; case Calendar.SUNDAY: yValuesSunday.add(new barEntry(value,i)); break; }}barDataSet barDataSetMonday = new barDataSet(yValuesMonday,this.getResources().getString(R.string.text_monday));barDataSetMonday.setcolor(this.getResources().getcolor(R.color.diagramGreencolor));barDataSet barDataSetTuesday = new barDataSet(yValuesTuesday,this.getResources().getString(R.string.text_tuesday));barDataSetTuesday.setcolor(this.getResources().getcolor(R.color.diagramOrangecolor));barDataSet barDataSetWednesday = new barDataSet(yValuesWednesday,this.getResources().getString(R.string.text_wednesday));barDataSetWednesday.setcolor(this.getResources().getcolor(R.color.diagramPinkcolor));barDataSet barDataSetThursday = new barDataSet(yValuesThursday,this.getResources().getString(R.string.text_thursday));barDataSetThursday.setcolor(this.getResources().getcolor(R.color.diagramBlackcolor));barDataSet barDataSetFrIDay = new barDataSet(yValuesFrIDay,this.getResources().getString(R.string.text_frIDay));barDataSetFrIDay.setcolor(this.getResources().getcolor(R.color.diagramBluecolor));barDataSet barDataSetSaturday = new barDataSet(yValuesSaturday,this.getResources().getString(R.string.text_saturday));barDataSetSaturday.setcolor(this.getResources().getcolor(R.color.diagramRedcolor));barDataSet barDataSetSunday = new barDataSet(yValuesSunday,this.getResources().getString(R.string.text_sunday));barDataSetSunday.setcolor(this.getResources().getcolor(R.color.diagramYellowcolor));ArrayList<barDataSet> dataSets = new ArrayList<barDataSet>();dataSets.add(barDataSetMonday);dataSets.add(barDataSetTuesday);dataSets.add(barDataSetWednesday);dataSets.add(barDataSetThursday);dataSets.add(barDataSetFrIDay);dataSets.add(barDataSetSaturday);dataSets.add(barDataSetSunday);barData data = new barData(xValues,dataSets);this.barChart.setData(data);this.barChart.animateY(1000); 我现在的问题是xLabel和xValues根本不匹配:
条形图放置在远离xLabel的位置,最后一个条目和最后一个条目之前的条目之间有很大的空间.
我还测试了将所有数据放入一个数据集时的外观. xLabel也与xValues不匹配:
我该如何解决这个问题?
编辑
您在xLabels中看到的日期属于该栏.那么为什么xLabel的位置离条很远呢?
编辑2:
使用lineChart:
protected voID initData() { List<MeasureDataListEntry> measureDataListEntry = null; if(this.favourite) { measureDataListEntry = this.sessionMeasureDataListFavourite.getMeasureDataList().getMeasureDataListEntrIEs(); } else { measureDataListEntry = this.sessionMeasureDataList.getMeasureDataList().getMeasureDataListEntrIEs(); } ArrayList<String> xValues = new ArrayList<String>(); ArrayList<Entry> yValuesMonday = new ArrayList<Entry>(); ArrayList<Entry> yValuesTuesday = new ArrayList<Entry>(); ArrayList<Entry> yValuesWednesday = new ArrayList<Entry>(); ArrayList<Entry> yValuesThursday = new ArrayList<Entry>(); ArrayList<Entry> yValuesFrIDay = new ArrayList<Entry>(); ArrayList<Entry> yValuesSaturday = new ArrayList<Entry>(); ArrayList<Entry> yValuesSunday = new ArrayList<Entry>(); for(int i = 0; i < measureDataListEntry.size(); i++) { String StringValue = measureDataListEntry.get(i).getTime(); Long value = Long.parseLong(StringValue) * 1000; DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy",Locale.GERMAN); String date = dateFormat.format(new Date(value)); xValues.add(date); } for(int i = 0; i < measureDataListEntry.size(); i++) { String stringValue = measureDataListEntry.get(i).getValue(); int dayOfWeek = Helper.getDayOfWeek(measureDataListEntry.get(i).getTime()); float value = float.parsefloat(stringValue); switch(dayOfWeek) { case Calendar.MONDAY: yValuesMonday.add(new Entry(value,i)); break; case Calendar.TUESDAY: yValuesTuesday.add(new Entry(value,i)); break; case Calendar.WednESDAY: yValuesWednesday.add(new Entry(value,i)); break; case Calendar.THURSDAY: yValuesThursday.add(new Entry(value,i)); break; case Calendar.FRIDAY: yValuesFrIDay.add(new Entry(value,i)); break; case Calendar.SATURDAY: yValuesSaturday.add(new Entry(value,i)); break; case Calendar.SUNDAY: yValuesSunday.add(new Entry(value,i)); break; } } lineDataSet lineDataSetMonday = new lineDataSet(yValuesMonday,this.getResources().getString(R.string.text_monday)); lineDataSetMonday.setcolor(this.getResources().getcolor(R.color.diagramGreencolor)); lineDataSetMonday.setCirclecolor(this.getResources().getcolor(R.color.diagramGreencolor)); lineDataSetMonday.setlinewidth(1f); lineDataSetMonday.setCircleSize(4f); lineDataSetMonday.setFillAlpha(65); lineDataSetMonday.setFillcolor(this.getResources().getcolor(R.color.diagramGreencolor)); lineDataSet lineDataSetTuesday = new lineDataSet(yValuesTuesday,this.getResources().getString(R.string.text_tuesday)); lineDataSetTuesday.setcolor(this.getResources().getcolor(R.color.diagramOrangecolor)); lineDataSetTuesday.setCirclecolor(this.getResources().getcolor(R.color.diagramOrangecolor)); lineDataSetTuesday.setlinewidth(1f); lineDataSetTuesday.setCircleSize(4f); lineDataSetTuesday.setFillAlpha(65); lineDataSetTuesday.setFillcolor(this.getResources().getcolor(R.color.diagramOrangecolor)); lineDataSet lineDataSetWednesday = new lineDataSet(yValuesWednesday,this.getResources().getString(R.string.text_wednesday)); lineDataSetWednesday.setcolor(this.getResources().getcolor(R.color.diagramPinkcolor)); lineDataSetWednesday.setCirclecolor(this.getResources().getcolor(R.color.diagramPinkcolor)); lineDataSetWednesday.setlinewidth(1f); lineDataSetWednesday.setCircleSize(4f); lineDataSetWednesday.setFillAlpha(65); lineDataSetWednesday.setFillcolor(this.getResources().getcolor(R.color.diagramPinkcolor)); lineDataSet lineDataSetThursday = new lineDataSet(yValuesThursday,this.getResources().getString(R.string.text_thursday)); lineDataSetThursday.setcolor(this.getResources().getcolor(R.color.diagramBlackcolor)); lineDataSetThursday.setCirclecolor(this.getResources().getcolor(R.color.diagramBlackcolor)); lineDataSetThursday.setlinewidth(1f); lineDataSetThursday.setCircleSize(4f); lineDataSetThursday.setFillAlpha(65); lineDataSetThursday.setFillcolor(this.getResources().getcolor(R.color.diagramBlackcolor)); lineDataSet lineDataSetFrIDay = new lineDataSet(yValuesFrIDay,this.getResources().getString(R.string.text_frIDay)); lineDataSetFrIDay.setcolor(this.getResources().getcolor(R.color.diagramBluecolor)); lineDataSetFrIDay.setCirclecolor(this.getResources().getcolor(R.color.diagramBluecolor)); lineDataSetFrIDay.setlinewidth(1f); lineDataSetFrIDay.setCircleSize(4f); lineDataSetFrIDay.setFillAlpha(65); lineDataSetFrIDay.setFillcolor(this.getResources().getcolor(R.color.diagramBluecolor)); lineDataSet lineDataSetSaturday = new lineDataSet(yValuesSaturday,this.getResources().getString(R.string.text_saturday)); lineDataSetSaturday.setcolor(this.getResources().getcolor(R.color.diagramRedcolor)); lineDataSetSaturday.setCirclecolor(this.getResources().getcolor(R.color.diagramRedcolor)); lineDataSetSaturday.setlinewidth(1f); lineDataSetSaturday.setCircleSize(4f); lineDataSetSaturday.setFillAlpha(65); lineDataSetSaturday.setFillcolor(this.getResources().getcolor(R.color.diagramRedcolor)); lineDataSet lineDataSetSunday = new lineDataSet(yValuesSunday,this.getResources().getString(R.string.text_sunday)); lineDataSetSunday.setcolor(this.getResources().getcolor(R.color.diagramYellowcolor)); lineDataSetSunday.setCirclecolor(this.getResources().getcolor(R.color.diagramYellowcolor)); lineDataSetSunday.setlinewidth(1f); lineDataSetSunday.setCircleSize(4f); lineDataSetSunday.setFillAlpha(65); lineDataSetSunday.setFillcolor(this.getResources().getcolor(R.color.diagramYellowcolor)); ArrayList<lineDataSet> dataSets = new ArrayList<lineDataSet>(); dataSets.add(lineDataSetMonday); dataSets.add(lineDataSetTuesday); dataSets.add(lineDataSetWednesday); dataSets.add(lineDataSetThursday); dataSets.add(lineDataSetFrIDay); dataSets.add(lineDataSetSaturday); dataSets.add(lineDataSetSunday); lineData data = new lineData(xValues,dataSets); this.lineChart.setData(data); this.lineChart.animateX(1000);} 一切都很好:
解决方法 我不确定你想要什么.但要将x标签置于条形图上方,请致电:
chart.getXLabels().setCenterXLabelText(true);
至于条形图内的组,也许您应该查看示例项目,看看这里做了什么:
https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java
更新:
如果您只想每天使用单独的颜色,请将所有条目放在一个DataSet中,并将7种颜色(每天一个)添加到数据集中.在这种情况下,x值数组需要与您提供的条目数组一样长,包含不同的日期.
@H_419_71@ 总结以上是内存溢出为你收集整理的MPAndroidChart BarChart xValues Issue全部内容,希望文章能够帮你解决MPAndroidChart BarChart xValues Issue所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)