如何要求在股票图表中记录大型数据集的所有数据点?

时间:2018-11-14 04:44:16

标签: amcharts amstock

在使用相当大的数据集时,如何确保所有数据记录在单个amcharts3股票图表上?尽管设置了syncDataTimestamps: trueAmcharts.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,似乎也有同样的问题。

1 个答案:

答案 0 :(得分:0)

该问题是由于您的groupToPeriods设置与您正在使用的“同步时间戳记”功能结合使用的。设置groupToPeriods时,是在指示amCharts将数据分组到指定的时间段(当达到整个maxSeries时)(从数组中的最小到最大时间段)。即使您的数据集中只有几个点,同步时间戳方法也会创建虚拟点以便进行数据比较,因此可见点恰好在屏幕截图中被分组为一个点,而在代码笔中根本不显示任何内容

您唯一的选择是删除groupToPeriods或通过将maxSeries设置为0来完全禁用分组,但是后者会影响性能。您可以在here上找到有关股票图表数据分组工作方式的更多信息。