Mpandroidchart文本未正确显示在折线图的x轴上

h6my8fg2  于 2023-06-28  发布在  Android
关注(0)|答案(1)|浏览(156)

我正在使用Mpandroidchart。我创建了一个折线图,并试图将字符串放在我的xaxis上。

final ArrayList<String> xAxisLabel = new ArrayList<>(Arrays.asList("March","April","May"));


private ArrayList<Entry> lineChartDataSet(){
    ArrayList<Entry> dataSet = new ArrayList<Entry>();

    dataSet.add(new Entry(1,40));
    dataSet.add(new Entry(2,10));
    dataSet.add(new Entry(3,15));    
    return  dataSet;

}

 lineDataSet = new LineDataSet(lineChartDataSet(),"data set");
 XAxis xAxis = lineChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawGridLines(false);

    //String setter in x-Axis
    xAxis.setValueFormatter(new com.github.mikephil.charting.formatter.IndexAxisValueFormatter(xAxisLabel));
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);

输出

在上图中,您可以看到月份名称没有正确放置。即,不显示march,仅显示aprilmay

预期产出

我该怎么做?
任何帮助都将不胜感激

d8tt03nd

d8tt03nd1#

在MPDandroidChart v3.1.0版本中,您可以使用自定义ValueFormatter并覆盖String getAxisLabel(float value,AxisBase axis)方法,而不是IndexAxisValueFormatter,您可以定义自己的逻辑来替换每个X值对应的String。基于您的数据集的示例如下所示:

xAxis.setValueFormatter(new ValueFormatter() {
  @Override
  public String getAxisLabel(float value, AxisBase axis) {
     String label = "";
     if(value == 1)
       label = "March";
     else if(value == 2)
       label = "April";
     else if(value == 3)
       label = "May";
     return label;
   }
});

结果将如下所示:

相关问题