无法绘制正确的线性图形,其中X是日期时间戳

问题描述 投票:0回答:1

当我用graphView http://prntscr.com/hjg501(用plot.ly测试:http://prntscr.com/hjgiim)绘制它时,图表看起来没问题

然后使用hellochart / mpchart时图形看起来很糟糕:

Hellochart:http://prntscr.com/hjg8fa

MPChart:http://prntscr.com/hjghbb

我在这两个图上的数据集是这个(X,Y):

1512488280000 1.200000048 1512488310000 1.200000048 1512488346000 1.200000048 1512488370000 3.599999905 1512488400000 1.200000048 1512488430000 1.200000048 1512488460000 1.200000048 1512488490000 1.200000048 1512488524000 1.200000048 1512488550000 6 1512488580000 1.200000048 1512488612000 1.200000048 1512488646000 1.200000048 1512488674000 3.599999905 1512488702000 1.200000048 1512488730000 1.200000048 1512488760000 6 1512488790000 1.200000048 1512488820000 1.200000048 1512488850000 1.200000048 1512488880000 2.400000095 1512488910000 1.200000048 1512488940000 1.200000048 1512488970000 1.200000048 1512489000000 1.200000048 1512489030000 1.200000048 1512489060000 12 1512489090000 1.200000048 1512489126000 13.19999981 1512489150000 7.199999809

我看到hellochart和mpchart图表看起来一样,而在graphview中它显示正确,所以我一定做错了然后......

有没有办法让它发挥作用?

java android mpandroidchart android-graphview
1个回答
1
投票

问题解决了。事实证明,大多数库不规范化值并依赖于双精度/浮点数。目前只接受长整数的库是GraphView,但它非常有限并且基本上已被弃用。因此,在填充dataSet之前,我们需要对值进行标准化。

我需要做的就是在添加到绘图数据集之前规范化X值。我决定依靠差异而不是依赖于一些共同的除数。

例如,您有以下几点:

x1 1512488280000   y1 1.200000048

x2 1512488310000   y2 1.200000048

x3 1512488346000   y3 1.200000048

x4 1512488370000   y4 3.599999905

标准化数据集计算:

如果计算x1x2Diff(x1和x2之间的差异),我们的新数据集中的x2Point将获得30000,而x1Point将其设置为0(因为我们感兴趣的是保持点之间的相同差异)。

x2x3Diff是36000(你需要跟踪之前的x值或者只是简单地加上前一个点,所以x3Point = x2x3Diff + x2Point = 66000(在我们的新数据集中)。

最后x3x4Diff为24000,因此x4Point = x3x4Diff + x3Point = 90000。

最后,这是我们新的规范化数据集(它将在诸如hellocharts和mpcharts之类的库中绘制正确的图形):

 0     1.200000048

30000 1.200000048

66000 1.200000048

90000 3.599999905

现在,您还可以通过计算原始数据集中的x1x4Diff来检查是否正确执行了此操作,差距为90000。

另请注意,您可以创建一个跟踪最新值的变量,因为这个示例是为了说明它是如何工作的(这就是我逐步分解它的原因)。

© www.soinside.com 2019 - 2024. All rights reserved.