无法绘制正确的线性图,其中 X 是日期时间戳
Not able to draw a proper Linear graph where X is date timestamp
当我用 graphView 绘制图表时,图表看起来还不错 http://prntscr.com/hjg501 (tested with plot.ly: http://prntscr.com/hjgiim)
然后使用 hellochart/mpchart 时图形看起来很糟糕:
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 中它显示正确,所以我一定是做错了什么...
有没有办法让它起作用?
问题已解决。事实证明,大多数库都没有规范化值,而是依赖于 doubles/floats。目前唯一接受长整数的库是 GraphView,但它非常有限并且基本上已被弃用。因此,我们需要在填充数据集之前对值进行规范化。
我需要做的就是在添加到绘图数据集之前标准化 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。
另请注意,您可以创建一个变量来跟踪最新值,因为这个示例是为了展示它是如何工作的(这就是我逐步分解它的原因)。
当我用 graphView 绘制图表时,图表看起来还不错 http://prntscr.com/hjg501 (tested with plot.ly: http://prntscr.com/hjgiim)
然后使用 hellochart/mpchart 时图形看起来很糟糕:
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 中它显示正确,所以我一定是做错了什么...
有没有办法让它起作用?
问题已解决。事实证明,大多数库都没有规范化值,而是依赖于 doubles/floats。目前唯一接受长整数的库是 GraphView,但它非常有限并且基本上已被弃用。因此,我们需要在填充数据集之前对值进行规范化。
我需要做的就是在添加到绘图数据集之前标准化 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。
另请注意,您可以创建一个变量来跟踪最新值,因为这个示例是为了展示它是如何工作的(这就是我逐步分解它的原因)。