setVisibleXRangeMaximum和更改数据集不将视口更新为预期的缩放级别

时间:2018-04-11 03:42:44

标签: android mpandroidchart

我使用的LineChart使用3种视图模式;每日,每月和每年。用户可以在这三者之间切换。所有这些模式都实现了基于日期的x轴,其数据集以毫秒为单位提供,格式化为特定的日期格式。

我将可见x范围最大值设置为6个条目,这意味着每日模式为6天,每月模式为6个月,年度模式为6年。最初,图表设置为以日常模式显示,结果按预期进行。用户切换到月模式然后切换回每日模式后,图表似乎根据设置为月模式的x范围进行缩放。因此它似乎放大到每月模式使用的级别。我记录了每个视图模式的最后一个范围和最后一个x值,并确保为每个视图模式设置了正确的值。

以下是我的所作所为。

`

#!/usr/bin/python3
# 2018.04.11 11:40:17 CST

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
#h = plt.contourf(x,y,z)

plt.imshow(z)
plt.show()

这真的是 MPAndroidChart 库的问题,还是我可能会错过一些东西?

2 个答案:

答案 0 :(得分:0)

更改以下代码:

switch (mode) {
    case daily:
        Utils.logd(rangedaily + " " + maxdaily + " " + mindaily);
        chart.setVisibleXRangeMaximum(rangedaily);
        chart.moveViewToX(maxdaily);
        break;
    case monthly:
        Utils.logd(rangemonthly + " " + maxmonthly + " " + minmonthly);
        chart.setVisibleXRangeMaximum(rangemonthly);
        chart.moveViewToX(maxmonthly);
        break;
    case annual:

}

switch (mode) {
    case daily:
        Utils.logd(rangedaily + " " + maxdaily + " " + mindaily);
        chart.resetViewPortOffsets();
        chart.setVisibleXRangeMaximum(rangedaily);
        chart.moveViewToX(maxdaily);
        chart.invalidate();
        break;
    case monthly:
        Utils.logd(rangemonthly + " " + maxmonthly + " " + minmonthly);
        chart.resetViewPortOffsets();
        chart.setVisibleXRangeMaximum(rangemonthly);
        chart.moveViewToX(maxmonthly);
        chart.invalidate();
        break;
    case annual:

}

答案 1 :(得分:0)

我遇到了同样的问题,并通过使用setVisibleXRange而不是setVisisbleXRangeMaximum解决了该问题。

尝试使用此:

    chart.setVisibleXRange(rangedaily,rangedaily);