如何在MPAndroidChart中连续更新Y轴值

时间:2015-08-11 06:03:28

标签: android axis scaling linechart mpandroidchart

我希望我的轴在LineChart中实时调整它的最大值和最小值。当新数据的Y值增加(正和负)时,resetAxisMaxValue()和resetAxisMinValue()等函数运行良好,但是,一旦信号再次变低,Y值max和min永远不会下降到较小的值所以它可以在图表的完整画布上显示所有新数据。我想检查是否有自动执行此操作的方法,或者是否应该使用暴力。谢谢。

2 个答案:

答案 0 :(得分:2)

我发布了我实施的解决方案。它实时工作。

将以下行添加到将数据附加到图表的函数中。

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

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

答案 1 :(得分:1)

亚历克斯的答案有点老了,所以...

MPAndroidChart有一个名为setAutoScaleMinMaxEnabled(boolean enabled)的方法。 它使您的图表可以自动调整图表的比例。您可以像这样简单地使用它。

chart.setAutoScaleMinMaxEnabled(true);