![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Необходимо построить график. По оси Y - числовое значение, по оси Х - дата и время. Но время чаще, чем раз в секунду. Т.е. данные такие, например:
12.11.2019 00:00:01 - 134 12.11.2019 00:00:01 - 136 12.11.2019 00:00:01 - 134,5 12.11.2019 00:00:01 - 135 Но при построении через ADDXY получается вертикальная линия. Раньше я это как-то делал, т.е. это возможно, но уже забыл как. Подскажите пожалуйста, очень нужна помощь... |
|
#2
|
|||
|
|||
|
Ну добавть еще одно число в Х. Что-то типа:
12.11.2019 00:00:01 01 - 134 12.11.2019 00:00:01 02 - 136 12.11.2019 00:00:01 03 - 134,5 12.11.2019 00:00:01 04 - 135 Это самое простое. По коду, там просто заводишь счетчик и переменую для пред. значения. Ну и в цикле это все делаешь. Если текущее значение совпадает с предыдущим, то увеличиваешь счетчик, если нет - то сбрасываешь. Что-то типа: Код:
type
TMyData = record
Timestamp : String;
Value : Double;
end;
procedure TForm1.BuildChart(A : Array Of TMyData);
var
I, C : Integer;
T : String;
begin
T := 0;
C := 0;
For I := Low(A) To High(A) Do
begin
If T = A[i].Timestamp Then Inc(C) Else C := 1;
Chart1.Series[0].AddXY(Format('%s %2d',[A[i].Timestamp,C]),A[i].Value);
T := A[i].Timestamp;
end;
end;Последний раз редактировалось lmikle, 15.12.2019 в 22:54. |