Highcharts изменяет значение из файла CSV перед построением графика как время эпохи, а не в мс, поэтому оно должно быть умножено на 1000 - PullRequest
0 голосов
/ 13 марта 2019

Я нашел возможность использовать функцию обратного вызова после прочтения CSV-файла в старших чартах.Но мои знания не достаточно хороши, чтобы получить первое значение в строке и умножить на 1000. Я начинаю с кода из найденного примера: (https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/data/parsed/)

data: {
        csv: document.getElementById('csv').innerHTML,
        parsed: function (columns) {
            // We want to keep the values since 1950 only
            $.each(columns, function () {
                // Keep the first item which is the series name, then remove the following 70
                this.splice(1, 70);
            });
        }
    },

Я должен поставить свой кодвместо «this.splice (1,70)», но не знаю, как.

Мои данные выглядят так:

Date,Temp,Press
1552417882, 25.54,980.23
1552417942, 25.60,980.19
1552418002, 25.60,980.17
1552418062, 25.58,980.14
1552418122, 25.53,980.12
1552418183, 25.48,980.06
1552418243, 25.48,980.06
1552418303, 25.47,980.04
1552418363, 25.47,980.02

И также первая строка (описание) должна быть неизменной.

С уважением, Альберт

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я не думал, что будет разница, как называются данные. (Я использовал пример, с которого я начал, и там формат Date, я думаю, просто используется для tiptools, но я никогда не удалялся). Любая идея, почему он не работает, если приходит из файла, а не HTML-страницы. Может быть, первая строка также будет изменена, если она идет из файла.

var dataFilePath = "data/"+getDataFilename(query);

$(function () {
  // Register a parser for the American date format used by Google
    Highcharts.Data.prototype.dateFormats['m/d/Y'] = {
        regex: '^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2})$',
        parser: function (match) {
            return Date.UTC(+('20' + match[3]), match[1] - 1, +match[2]);
        }
    };

    // Get the CSV and create the chart
    $.get(dataFilePath, function (csv) {

        $('#container').highcharts({

            data: {
                csv: csv,
            parsed: function(columns) {
            columns[0].forEach(function(columns, i) {
                columns[0][i] *= 1000;
            });
            },

            title: {
                text: 'Wintergartentemperatur'
            },

С наилучшими пожеланиями Альберт

0 голосов
/ 13 марта 2019

Вы должны проверить структуру массива столбцов и пройти по первому внутреннему массиву, чтобы пересчитать метку времени:

data: {
    csv: document.getElementById('csv').innerHTML,
    parsed: function(columns) {
        columns[0].forEach(function(column, i) {
            columns[0][i] *= 1000;
        });
    }
},

Демонстрационная версия: https://jsfiddle.net/BlackLabel/zve9tsa8/

Справочник по API: https://api.highcharts.com/highcharts/data.parsed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...