1

我正在努力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不显示,仅显示和april显示may

预期产出

在此处输入图像描述

我该怎么做?

任何帮助将不胜感激

4

1 回答 1

2

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

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;
   }
}); 

结果将如下所示:

图表

于 2021-05-06T15:15:40.407 回答