如何在 MPAndroidChart 中持续更新 Y 轴值
How to continuously update Y-axis values in MPAndroidChart
我希望折线图中的轴实时调整它的最大值和最小值。当新数据的 Y 值增加(正值和负值)时,像 resetAxisMaxValue() 和 resetAxisMinValue() 这样的函数可以很好地工作,但是,一旦信号再次变低,Y 值最大值和最小值永远不会下降到较小的值,因此它可以显示图表完整 canvas 上的所有新数据。我想检查是否有自动执行此操作的方法,或者我是否应该使用蛮力。谢谢。
我post我已经实施的解决方案。它实时运行良好。
将以下行添加到将数据附加到图形的函数中。
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();
如果您遇到问题,请随时问我。享受吧!
Alex的回答有点老了,所以...
MPAndroidChart 有一个名为 setAutoScaleMinMaxEnabled(boolean enabled)
的方法。
它使您的图表能够自动调整图表的比例。你可以像这样简单地使用它。
chart.setAutoScaleMinMaxEnabled(true);
我希望折线图中的轴实时调整它的最大值和最小值。当新数据的 Y 值增加(正值和负值)时,像 resetAxisMaxValue() 和 resetAxisMinValue() 这样的函数可以很好地工作,但是,一旦信号再次变低,Y 值最大值和最小值永远不会下降到较小的值,因此它可以显示图表完整 canvas 上的所有新数据。我想检查是否有自动执行此操作的方法,或者我是否应该使用蛮力。谢谢。
我post我已经实施的解决方案。它实时运行良好。
将以下行添加到将数据附加到图形的函数中。
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();
如果您遇到问题,请随时问我。享受吧!
Alex的回答有点老了,所以...
MPAndroidChart 有一个名为 setAutoScaleMinMaxEnabled(boolean enabled)
的方法。
它使您的图表能够自动调整图表的比例。你可以像这样简单地使用它。
chart.setAutoScaleMinMaxEnabled(true);