Как требуются ВСЕ точки данных, записанные для больших наборов данных на биржевой диаграмме? - PullRequest
0 голосов
/ 14 ноября 2018

Как мне обеспечить, чтобы все данные записывались на одной биржевой диаграмме 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: {
        }
    }]
});

Редактировать:А вот ссылка на кодовую ручку , которая, похоже, демонстрирует почти такую ​​же проблему.

1 Ответ

0 голосов
/ 14 ноября 2018

Проблема связана с настройкой groupToPeriods в сочетании с используемой вами функцией синхронизации временных меток. Когда вы устанавливаете groupToPeriods, вы указываете amCharts сгруппировать данные в указанные вами периоды, когда достигается общий maxSeries (от самого маленького до самого большого периода в массиве). Несмотря на то, что в вашем наборе данных есть только несколько точек, метод отметки времени синхронизации создает фиктивные точки для того, чтобы сравнения данных работали, поэтому видимые точки оказываются сгруппированными в одну точку на скриншоте и ничего не отображаются в коде ручки. .

Вы можете либо удалить groupToPeriods, либо полностью отключить группировку, установив для maxSeries значение 0, но последнее влияет на производительность. Вы можете найти больше информации о том, как работает группировка данных биржевого графика здесь .

...