MPandroidChart - 放大和缩小以仅适合Y轴上的值

时间:2015-05-19 08:29:06

标签: android view mpandroidchart

我正在使用awsome MPandroidChart开源库,我正在从我在线接收的数据中实时填充图表,当使用新值填充图表时,我只允许显示特定数量的x索引,使用“setVisibleXRange()”和“moveViewToX()”将图表滑动到屏幕左侧,一次只显示最后一个条目。

这一切都很好但我希望实现一种情况,其中视口被修改以完全适合最高和最低可见值,与“fitScreen()”相同,但仅修改Y轴。 “zoomOut()”和“zoomIn()”使用相对输入,与“zoom()”相同 所以我不能根据我的数据使用它们。 我需要的是一种在Y轴上定位视图的方法,使其在每个周期适合不同的范围,例如:2到15或-98到34等等。

有没有人对如何做到这一点有任何想法? 感谢所有答案。 @PhillJay

3 个答案:

答案 0 :(得分:1)

也许这个答案并不完美,但是 Yaxis 可以适合屏幕:

chart.getAxisLeft().setLabelCount(10, true);
chart.fitScreen();

答案 1 :(得分:0)

它有些旧,但可能与之相关的答案与轴无关。您需要的是修改视口:

private void autoScaleLineChart(@NonNull LineChart lineChart) {
    if (lineChart.getLineData() == null) return;

    float lowestVisibleX = lineChart.getLowestVisibleX();
    float highestVisibleX = lineChart.getHighestVisibleX();

    LineData chartData = lineChart.getLineData();
    chartData.calcMinMaxY(lowestVisibleX, highestVisibleX);
    //calculating offsets for axes to display correct labels
    lineChart.getXAxis().calculate(chartData.getXMin(), chartData.getXMax());
    calculateMinMaxForYAxis(lineChart, YAxis.AxisDependency.LEFT);
    calculateMinMaxForYAxis(lineChart, YAxis.AxisDependency.RIGHT);
    //this is where the magic happens
    lineChart.calculateOffsets();
    //if nothing happens try adding
    //lineChart.invalidate();
}

private void calculateMinMaxForYAxis(@NonNull LineChart lineChart, @NonNull YAxis.AxisDependency axisDependency) {
    LineData chartData = lineChart.getLineData();
    YAxis yAxis = lineChart.getAxis(axisDependency);
    if (yAxis.isEnabled()) {
        float yMin = chartData.getYMin(axisDependency);
        float yMax = chartData.getYMax(axisDependency);
        yAxis.calculate(yMin, yMax);
    }
}

另外阅读以下内容可能会有所帮助:https://github.com/PhilJay/MPAndroidChart/wiki/Modifying-the-Viewport

答案 2 :(得分:-1)

我建议你阅读documentation of the YAxis

专注于以下方法:

  • setStartAtZero(...)
  • setAxisMaxValue(...)& setAxisMinValue(...)
  • setSpaceTop(...)
  • setSpaceBottom(...)

对于其中一些,您应该能够完全根据需要限制轴的可见区域。