@M-I-B

Как построить график при отсутствующих данных?

Упрощенно данные из таблицы (MySQL) структурированы так: [принадлежность, x, y]
Есть набор данных, где "принадлежность" - 1 : красная линия, 2 - синяя линия:
[1,0,1],[1,1,2],[1,2,2],[1,3,7],[1,6,3],[1,7,4],[1,8,1]
[2,0,2],[2,1,4],[2,2,4],[2,3,2],[2,4,2],[2,5,5],[2,6,6],[2,7,5],[2,8,7]

Особенность: для красной линии нет сведений о координатах в позициях х4 и х5 - [1,4,???], [1,5,???]

Все мои попытки разобраться с Google Charts привели к тому, что отсутствующие данные он воспринимает как null и, соответственно, линию не прорисовывает.
6200cf4a416e1861224245.png

Задача: из этих данных получить примерно график такого вида:
6200cf340d951887335665.png

т.е. с "отсутствующими данными". Ведь делает же он это, например, в точке х=1,5 ...

Подскажите, как можно это реализовать.
Если можно, то хотя бы с минимальным примером кода ...
  • Вопрос задан
  • 102 просмотра
Решения вопроса 2
twobomb
@twobomb

function restoreArr(arr){  
  if(arr.length > 0 && arr[0] == null)
       	throw "Не найдено первое число";
        
	for(let i = 0; i < arr.length-1;i++){
  	if(arr[i+1] == null){
    	let cnt = 1;
      let nextNum = null;
    	for(let j = i+1;j < arr.length;j++)
      	if(arr[j] == null)
        	cnt++
        else{
        	nextNum = arr[j];
        	break;
        }
       if(nextNum == null)
       	throw "Не найдено следующие число";        
      
      let step = (nextNum - arr[i])/cnt;
    	for(let j = i+1,c = arr[i]+step;j < arr.length;j++,c+=step)
       if(arr[j] == null)
       	arr[j] = c;
        else
        break;
    }
  }
  return arr;
}

P.S. Восстанавливает только промежуточные значения, если нет начального или конечного, думаю сам сможешь сделать. Нужно просто найти первое число и тупо вставить
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Добавить в options interpolateNulls: true.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы