首页 > 解决方案 > MPAndroidChart - getFormattedValue 方法中的错误值。他们来自哪里?

问题描述

我正在处理一个使用 MPAndroidChart 库的项目,这让我非常抓狂,我想删除它。

问题是我创建了一个自定义 ValueFormatter,但我无法理解这些值来自哪里,都是错误的。

 private void setData() {
  for (int i = 1; i <= 10; i++) {
        Entry entry = new Entry(i, i);
        values.add(entry);
    }


    IAxisValueFormatter valueFormatter = new myValueFormatter();
    XAxis xAxis = mChart.getXAxis();
    xAxis.setValueFormatter(valueFormatter);


    LineDataSet set1 = new LineDataSet(values, "DataSet 1");

    ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
    dataSets.add(set1); // add the datasets

    // create a data object with the datasets
    LineData data = new LineData(dataSets);

    // set data
    mChart.setData(data);
}

自定义格式化程序类: 我有一个包含 1、2、3、4、5、6、7、8、9、10 值的数组,但我在 getFormattedValue 方法中得到了 2、4、6、8、10 个值。

public classmyValueFormatter implements IAxisValueFormatter {

   @Override
public String getFormattedValue(float value, AxisBase axis) {

            System.out.println(value); //Here I get odd values where they come from I don't know.

}

}

标签: androidchartsmpandroidchartlinechartandroid-studio-3.0

解决方案


好吧,通常这就是库的编写方式。看看这里:

https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/XAxisRenderer.java#L205

String label = mXAxis.getValueFormatter().getFormattedValue(mXAxis.mEntries[i / 2], mXAxis);

作者的意图可能是在标签之间留出更多间距。如果您认为这是一个错误,请将问题提交到 Github 上的库存储库。


推荐阅读