MPAndroidChart BarChart xValues Issue

MPAndroidChart BarChart xValues Issue,第1张

概述我注意到MP AndroidChart的BarChart存在问题,需要修复.首先我的代码: this.barChart = (BarChart) view.findViewById(R.id.bar_fragment_bar_chart);this.barChart.setDrawYValues(true);this.barChart.setDrawXLabels(false);this.b 我注意到MP AndroidChart的barChart存在问题,需要修复.首先我的代码:

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125412.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存