0

使用相当大的数据集时,如何确保所有数据都记录在单个 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: {
        }
    }]
});

编辑:这是一个似乎表现出相同问题的代码笔的链接。

4

1 回答 1

0

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

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

于 2018-11-14T18:53:19.037 回答