当我使用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.2000000481512488310000 1.2000000481512488346000 1.2000000481512488370000 3.5999999051512488400000 1.2000000481512488430000 1.2000000481512488460000 1.2000000481512488490000 1.2000000481512488524000 1.2000000481512488550000 61512488580000 1.2000000481512488612000 1.2000000481512488646000 1.2000000481512488674000 3.5999999051512488702000 1.2000000481512488730000 1.2000000481512488760000 61512488790000 1.2000000481512488820000 1.2000000481512488850000 1.2000000481512488880000 2.4000000951512488910000 1.2000000481512488940000 1.2000000481512488970000 1.2000000481512489000000 1.2000000481512489030000 1.2000000481512489060000 121512489090000 1.2000000481512489126000 13.199999811512489150000 7.199999809

我看到在hellochart和mpchart图中看起来是一样的,而在graphview中它却可以正确显示,所以那我一定做错了...

有办法使它起作用吗?

最佳答案

问题解决了。事实证明,大多数库都不规范化值,而是依赖于double / float。 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。

还要注意,您可以创建一个变量来跟踪最新值,因为此示例显示了它的工作原理(这就是为什么我一步一步将其分解)。

10-05 17:47