我在使用 LightningChart 时遇到了一个有趣的问题,它似乎会破坏或以其他方式减少我的数据,具体取决于它与图表的 DateOrigin 的距离。我的数据是每秒 1000 个样本,我试图一次显示 1-2 周的数据。我正在使用 ChartXY 类,x 轴类型设置为“线性高精度”,其精度应为 1 毫秒,这就是我所需要的,我不再需要了,我正在创建一个 LineSeries 及其数据模式是“ProgressiveX”并且常规ProgressiveStep:true。
这是在 DateOrigin 附近绘制数据时的样子。
这是放大 DateOrigin 附近数据的样子。
看起来棒极了!闪电图正是我想要的!
但是,我希望正确偏移此数据以显示它是真正的绝对时间。
这是我将此数据偏移 14 天后的样子。我设置相对偏移量的代码如下所示。
ds.addArrayY(curve.data,step=1,start=14*24*60*60*1000)
好吧,缩小后看起来还不错,但是如果我们放大呢?
已经失控了!看起来 X 轴值被强制为 X 轴的某个更大的步长。距离 DateOrigin 越远,情况就会变得更糟。我担心这是引擎的一些内置行为,我期望太多,但是,它说它有 1 毫秒的分辨率,所以我希望这一点得到尊重。
这是我创建图表的方法。
// Create a Line Chart.
const PumpsChart = lightningChart().ChartXY({
// Set the chart into a div with id, 'target'.
// Chart's size will automatically adjust to div's size.
theme: Themes.lightGradient,
container: 'PumpsChart',
defaultAxisX: {
type: 'linear-highPrecision'
}
}).setTitle('') // Set chart title
.setTitleFont(new FontSettings({
family: waveChartFontFamily,
size: 20
}))
.setMouseInteractionWheelZoom(false)
axisPumpsChartDateTime = PumpsChart.getDefaultAxisX()
.setTickStrategy(
AxisTickStrategies.DateTime,
(tickStrategy) => tickStrategy.setDateOrigin(waveDateOrigin))
axisPumpsChartPressurePSI = PumpsChart.getDefaultAxisY()
.setTitle("Pressure (PSI)")
.setInterval(0,10000,0,true)
这是我创建 LineSeries 的方法
newDataSeries = targetChart.chart.addLineSeries(
{
yAxis: targetChart.axis,
dataPattern: {
pattern: 'ProgressiveX',
regularProgressiveStep: true,
}
}
);
以下是我向图表添加数据的方法:
ds.addArrayY(curve.data,step=1,start=14*24*60*60*1000)
我不想使用 AxisTickStrategies.DateTime 而不是 AxisTickStrategies.DateTime 有几个原因,我的数据跨度数周,100 小时太少,我对毫秒分辨率很好,我不需要更多,而且我需要以相对而非绝对时间呈现我的数据。
希望我遗漏了一些参数,我可以调整它们来实现这一目标。
EDIT
嗯,当数据相对于原点 -636 小时偏移时,时间刻度策略也会发生这种损坏。我在将 ProgressiveX 设置为 DataPattern.pattern 的情况下尝试了此操作。
**** 编辑 2 ****
好吧,我什至尝试将采样率降低到每秒 20 个样本,并将其改回 AxisTickStrategies.DateTime,出于某种原因,它将所有点“压缩”到这个神奇的 0.25 秒间隔。