gpt4 book ai didi

javascript - 在 highcharts 中,当图表具有高数据时工具提示不会移动,而当它具有低数据时

转载 作者:行者123 更新时间:2023-11-29 20:37:40 24 4
gpt4 key购买 nike

highcharts 中,当我使用 addpoint() 添加数据时允许 'shift''true' ,工具提示在数据量大时不会移动,就像在数据量少时一样。可以通过改变 rangeSelector 的范围来识别数据量。有什么我可以修改的,或者我应该包含一些额外的代码。我在下面的链接中重现了这个问题。

https://jsfiddle.net/1y3gmkt5/

// Create the chart
Highcharts.stockChart('container', {
chart: {
events: {
load: function () {

// set up the updating of the chart each second
var series1 = this.series[0];
setInterval(function () {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 100);
series1.addPoint([x, y], true, true);
}, 2000);
var series2 = this.series[1];
setInterval(function () {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 50);
series2.addPoint([x, y], true, true);
}, 2000);
}
}
},

time: {
useUTC: false
},

rangeSelector: {
buttons: [{
count: 1,
type: 'minute',
text: '1M'
}, {
count: 5,
type: 'minute',
text: '5M'
}, {
type: 'all',
text: 'All'
}],
inputEnabled: false,
selected: 0
},

title: {
text: 'Live random data'
},

exporting: {
enabled: false
},
legend: {
enabled: true
},
plotOptions: {
series: {
marker: {
states: {
hover: {
enabled: true,
animation: {duration: 100},
enableMouseTracking: true,
stickyTracking: true
}
}
}
}
},

tooltip:{
shared: true,
split: false,
stickyTracking: true,
enableMouseTracking: true,
enabled: true,
followPointer: true,
followTouchMove: true,
formatter: function(){
var tooltip = "";
var phaseNameList = "";

//tooltip += "<b>I-unit "+ "<br/>"+ "x: "+this.x +"</b>";
tooltip += "<b>I-unit "+ "<br/>"+ "x: "+ new Date(this.x)+
"</b>";
tooltip += "<br/>"+ "y: "+this.y +"</b>";
tooltip += "<br/>"+ this + "</b>";
return tooltip;
}
},

series: [{
name: 'Random data1',
data: (function () {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -999; i <= 0; i += 1) {
data.push([
time + i * 1000,
Math.round(Math.random() * 100)
]);
}
return data;
}())
},
{
name: 'Random data2',
data: (function () {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -999; i <= 0; i += 1) {
data.push([
time + i * 1000,
Math.round(Math.random() * 50)
]);
}
return data;
}())
}]
});
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://code.highcharts.com/stock/modules/export-data.js"></script>

<div id="container" style="height: 400px; min-width: 310px"></div>

预期结果:当鼠标指针悬停在任何标记上并保持原样时,工具提示应在新数据到达时向后移动。目前,当范围选择器的数据较少时工作正常,但当数据较多时则无法正常工作。

最佳答案

问题是由修改数据的 dataGrouping 属性引起的。您可以通过以下方式禁用它:

plotOptions: {
series: {
dataGrouping: {
enabled: false
},
...
}
}

代码片段:

// Create the chart
Highcharts.stockChart('container', {
chart: {
events: {
load: function() {

// set up the updating of the chart each second
var series1 = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 100);
series1.addPoint([x, y], true, true);
}, 2000);
var series2 = this.series[1];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 50);
series2.addPoint([x, y], true, true);
}, 2000);
}
}
},

time: {
useUTC: false
},

rangeSelector: {
buttons: [{
count: 1,
type: 'minute',
text: '1M'
}, {
count: 5,
type: 'minute',
text: '5M'
}, {
type: 'all',
text: 'All'
}],
inputEnabled: false,
selected: 0
},

title: {
text: 'Live random data'
},

exporting: {
enabled: false
},
legend: {
enabled: true
},
plotOptions: {
series: {
dataGrouping: {
enabled: false
},
marker: {
states: {
hover: {
enabled: true,
animation: {
duration: 100
},
enableMouseTracking: true,
stickyTracking: true
}
}
}
}
},

tooltip: {
shared: true,
split: false,
stickyTracking: true,
enableMouseTracking: true,
enabled: true,
followPointer: true,
followTouchMove: true,
formatter: function() {
var tooltip = "";
var phaseNameList = "";

//tooltip += "<b>I-unit "+ "<br/>"+ "x: "+this.x +"</b>";
tooltip += "<b>I-unit " + "<br/>" + "x: " + new Date(this.x) +
"</b>";
tooltip += "<br/>" + "y: " + this.y + "</b>";
tooltip += "<br/>" + this + "</b>";
return tooltip;
}
},

series: [{
name: 'Random data1',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -999; i <= 0; i += 1) {
data.push([
time + i * 1000,
Math.round(Math.random() * 100)
]);
}
return data;
}())
},
{
name: 'Random data2',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -999; i <= 0; i += 1) {
data.push([
time + i * 1000,
Math.round(Math.random() * 50)
]);
}
return data;
}())
}
]
});
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://code.highcharts.com/stock/modules/export-data.js"></script>

<div id="container" style="height: 400px; min-width: 310px"></div>


现场演示: https://jsfiddle.net/BlackLabel/k52rnhya/

API 引用: https://api.highcharts.com/highstock/plotOptions.series.dataGrouping.enabled

关于javascript - 在 highcharts 中,当图表具有高数据时工具提示不会移动,而当它具有低数据时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56343200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com