我希望在LineChart中,轴能够实时调整其最大和最小值。当新数据的Y值增加(包括正数和负数)时,resetAxisMaxValue() 和 resetAxisMinValue() 等函数可以很好地工作,但是一旦信号再次变弱,Y值的最大值和最小值就永远不会降至较小的值,因此无法在图形的全部画布上显示所有新数据。我想知道是否有方法可以自动实现这一点,或者我应该使用蛮力方法。谢谢。
我希望在LineChart中,轴能够实时调整其最大和最小值。当新数据的Y值增加(包括正数和负数)时,resetAxisMaxValue() 和 resetAxisMinValue() 等函数可以很好地工作,但是一旦信号再次变弱,Y值的最大值和最小值就永远不会降至较小的值,因此无法在图形的全部画布上显示所有新数据。我想知道是否有方法可以自动实现这一点,或者我应该使用蛮力方法。谢谢。
setAutoScaleMinMaxEnabled(boolean enabled)
的方法。它使您的图表自动调整图表的比例。您可以像这样简单地使用它。chart.setAutoScaleMinMaxEnabled(true);
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();
如果你遇到了一些问题,请随时问我。享受吧!