如何在MPAndroidChart中持续更新Y轴数值

6

我希望在LineChart中,轴能够实时调整其最大和最小值。当新数据的Y值增加(包括正数和负数)时,resetAxisMaxValue() 和 resetAxisMinValue() 等函数可以很好地工作,但是一旦信号再次变弱,Y值的最大值和最小值就永远不会降至较小的值,因此无法在图形的全部画布上显示所有新数据。我想知道是否有方法可以自动实现这一点,或者我应该使用蛮力方法。谢谢。

2个回答

5
亚历克斯的回答有点过时,因此...
MPAndroidChart有一个名为setAutoScaleMinMaxEnabled(boolean enabled)的方法。它使您的图表自动调整图表的比例。您可以像这样简单地使用它。
chart.setAutoScaleMinMaxEnabled(true);

谢谢,这个方法太棒了! - RaffMag

3
我发布了我实现的解决方案。它可以实时地很好地工作。
在将数据附加到图表的函数中添加以下行。
float maxVisiblePoint = -9999999;
float minVisiblePoint = 9999999;

//removing last element from the chart and finding max and min visible value
if(dataSet.getEntryCount() == 650) {
     mChartData.removeXValue(0);
     dataSet.removeEntry(0);

     for (Entry entry : dataSet.getYVals()) {
         if (entry.getVal() > maxVisiblePoint) maxVisiblePoint = entry.getVal();
         if (entry.getVal() < minVisiblePoint) minVisiblePoint = entry.getVal();
         entry.setXIndex(entry.getXIndex() - 1);
     }

//autogain is checked
if (autoScaleChecked) {
    YAxis leftAxis = mChart.getAxisLeft();
    leftAxis.setAxisMaxValue(maxVisiblePoint);
    leftAxis.setAxisMinValue(minVisiblePoint);
}
//static gain
else {
      YAxis leftAxis = mChart.getAxisLeft();
      leftAxis.setAxisMaxValue(5882400f);
      leftAxis.setAxisMinValue(-5882400f);
}
// let the chart know it's data has changed
mChart.notifyDataSetChanged();

如果你遇到了一些问题,请随时问我。享受吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接