在使用相当大的数据集时,如何确保所有数据记录在单个amcharts3股票图表上?尽管设置了syncDataTimestamps: true
,Amcharts.makeChart()
似乎仍忽略了值。
我有两个与compared: true
设置进行比较的数据集,非常类似于this answer。这两个数据集都具有字符串形式的日期时间。一个数据集明显大于另一个数据集。最初,我怀疑其中一个数据集没有显示,但是在设置compareGraphBullet: round
之后,我注意到了一个要点,
shown in this screenshot。
var my_chart = AmCharts.makeChart("my_chart_div", {
type: "stock",
theme: "light",
dataDateFormat: "YYYY-MM-DD JJ:NN:SS:QQQ",
categoryAxis: {
parseDates: true,
minPeriod: 'fff'
},
categoryAxesSettings: {
minPeriod: "fff",
groupToPeriods: ['fff', 'ss']
},
syncDataTimestamps: true,
dataSets: [
{
title: "my_first_data thing",
fieldMappings: [{
fromField: "reading",
toField: "value"
}],
dataProvider: data1_provider,
categoryField: "datetime",
compared: true
},
{
title: "my_second_data thing",
fieldMappings: [{
fromField: "target_value",
toField: "value"
}],
dataProvider: data2_provider,
categoryField: "datetime",
compared: true
}
],
panels: [{
// showCategoryAxis: false,
title: "Data set #1",
recalculateToPercents: "never",
stockGraphs: [{
id: "g1",
valueField: "value",
compareGraphBullet: 'round',
comparable: true,
compareField: "value"
}],
stockLegend: {
}
}]
});
编辑:这是一个link to a codepen,似乎也有同样的问题。
答案 0 :(得分:0)
该问题是由于您的groupToPeriods
设置与您正在使用的“同步时间戳记”功能结合使用的。设置groupToPeriods
时,是在指示amCharts将数据分组到指定的时间段(当达到整个maxSeries
时)(从数组中的最小到最大时间段)。即使您的数据集中只有几个点,同步时间戳方法也会创建虚拟点以便进行数据比较,因此可见点恰好在屏幕截图中被分组为一个点,而在代码笔中根本不显示任何内容
您唯一的选择是删除groupToPeriods
或通过将maxSeries
设置为0来完全禁用分组,但是后者会影响性能。您可以在here上找到有关股票图表数据分组工作方式的更多信息。