amcharts - 如何要求为股票图表中的大型数据集记录所有数据点?
问题描述
使用相当大的数据集时,如何确保所有数据都记录在单个 amcharts3 股票图表上?Amcharts.makeChart()
似乎忽略了值,尽管设置syncDataTimestamps: true
.
我有两个要与compared: true
设置进行比较的数据集,很像这个答案。两个数据集都有字符串形式的日期时间。一个数据集明显大于另一个。最初我怀疑其中一个数据集没有显示,但在设置后compareGraphBullet: round
,我注意到一个项目符号点,
如图所示。
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: {
}
}]
});
编辑:这是一个似乎表现出相同问题的代码笔的链接。
解决方案
问题是由于您的groupToPeriods
设置与您正在使用的同步时间戳功能相结合。当您设置 时groupToPeriods
,您将指示 amCharts 在maxSeries
达到总体时将数据分组到您指定的期间(从数组中的最小到最大期间)。即使您的数据集中只有几个点,同步时间戳方法也会创建虚拟点以进行数据比较,因此可见点恰好在您的屏幕截图中被分组为一个点,并且在您的代码笔中根本没有显示任何内容.
您唯一的选择是groupToPeriods
通过设置为 0 来完全删除或禁用分组maxSeries
,但后者会影响性能。您可以在此处找到有关股票图表数据分组如何工作的更多信息。
推荐阅读
- java - 构造函数需要一个找不到的 bean 类型
- apache-kafka - Kafka 流状态存储是为了什么?
- java - 为什么即使在关闭套接字后我也会收到此错误(java.net.BindException:地址已在使用:NET_Bind)?
- unity3d - 如何统一去除按钮的高亮状态?
- openstack - 新的 Web 应用程序或现有 OpenStack Horizon 的定制
- jestjs - Jest 每个测试套件和跨测试用例初始化和共享对象一次
- python - 在python中检测音频文件是否有语音
- python - 如何重启 PyQt5 应用程序
- python - numpy.r_ 将 1 放在中间
- c# - Unity 2D 'Attack()' 是一个局部函数,因此必须始终有一个主体