我有一个函数要用来向股票图表添加新的数据点。我需要创建一个条件,其中数据点之一带有图标。我看到stockEvents
可以做到这一点,但它没有显示在我的图表中:
function addDataPoint(ask) {
var dataProvider = chart.dataSets[0].dataProvider;
var newDate = new Date(dataProvider[dataProvider.length - 1].date.getTime());
newDate.setHours(newDate.getHours(), newDate.getMinutes() + 1, newDate.getSeconds());
var a = Math.round(Math.random() * (40 + 1000)) + 100 + 1000;
var b = Math.round(Math.random() * 100000000);
dataProvider.push({
date: newDate,
value: ask,
volume: ask
});
chart.dataSets[0].stockEvents = [{
date: newDate,
type: "flag",
text: "F",
description: "Some longer\ntext can also\n be added"
}];
dataProvider.shift();
}
最佳答案
您需要设置股票事件的graph
属性,以使其可见。这可以是对股票图对象或图的id
的引用。如果还没有在addDataPoint函数之外进行更新,则还需要调用validateData
来更新图表。
AmCharts.makeChart("chartdiv", {
// ...
"panels": [{
// ...
"stockGraphs": [{
// ...
"id": "g1", //added id
// ...
},
// ...
]
},
// ...
],
// ...
});
// ...
function addDataPoint(ask) {
// ...
chart.dataSets[0].stockEvents = [{
date: newDate,
type: "flag",
text: "F",
graph: "g1", //added
description: "Some longer\ntext can also\n be added"
}];
dataProvider.shift();
chart.validateData(); //added
}
还要注意,每次在addDataPoint函数中都将覆盖stockEvents数组。如果要保留以前的事件,则需要使用
push
,因为它是一个数组。Demo