Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как заставить чарт отображать только последний час? [D7, XP]


Страницы:   1 2

cvg ©   (2007-12-11 16:23:00) 

Собственно, сабж. По умолчанию он показывается весь (за сутки), а надо, чтоб только последний час. Как сделать? Наверное, что-нить типа Editing Chart/Chart/Axis ?


cvg   (2007-12-11 18:06:00) [1]

ОК


Kolan   (2007-12-11 18:00:00) [2]

> [24] cvg   (11.12.07 17:49)

Что вам надо, объясните?

Ответ прозвучал в
[18] Kolan ©   (11.12.07 17:10)
и
[19] Сергей М. ©   (11.12.07 17:14)


cvg   (2007-12-11 17:49:00) [3]

А если удалять промежуточные точки -- так это еще больше мороки (график-то чай, не квадраты рисует, а загогулины).


Kolan   (2007-12-11 17:45:00) [4]

> столь детально юзером всё равно разглядываться не будет

Не забывай, там можно увеличивать, так что разница есть.


cvg   (2007-12-11 17:23:00) [5]

Tj Virgo_Style:
Нет, все наоборот было очень складно изложено.


cvg   (2007-12-11 17:21:00) [6]

Честно говоря, иногда нескоторые секунды могут и просткакивать. А определять время их появления можно примерно так:
if compareTime(Chart2.SeriesList[n].XValues[i],_time) < 1

То есть, в настройках ничего подобного тому, что так проницательно телепатировал Virgo_Style, нет?


Virgo_Style   (2007-12-11 17:17:00) [7]

cvg   (11.12.07 17:05) [13]
тогда, если проблема не в отображении, а в самом существовании этих точек, то в предыдущем моем сообщении все, что после Сергей М.к данной задаче не относится.


Сергей М.   (2007-12-11 17:14:00) [8]


> точка в секунду
> есть простой смысл удалять из чарта все, что старше часа.
>  Логично?


Час = 3600 секунд.

Значит, в серии, визуализирующей данные последнего часа, у тебя должно быть не более 3600 точек.

Всякий раз перед добавлением в серию очередной точки проверяй, не превысит ли при этом серия длину 3600. Если да, то перед добавлением удали самый первый элемент серии.


Kolan   (2007-12-11 17:10:00) [9]

> Объясняю: чарт рисует 4 графика

Как время создания будете определять?

Не проше ли отталкиваться от количества точек?

При превышении опро кол-ва перед добавлением новой точки удаляйте первую. Эффект получится как на кардиограмме.


DiamondShark   (2007-12-11 17:09:00) [10]


> cvg   (11.12.07 17:05) [13]


> Объясняю:

Снизошёл-таки?


> Поэтому есть простой смысл удалять из чарта все, что старше
> часа

И даже больше. Потому что с частототй точка в секунду за час будет 3600 точек, каковое количество даже если и поместится на мониторе, столь детально юзером всё равно разглядываться не будет. у него и от сотни точек заворот мозгов случится.


Virgo_Style   (2007-12-11 17:09:00) [11]

Телепатирую: при достижении интервала в один час график стать как бы окном, скользящим по оси абсцисс. Например (вид оси абсцисс):

--10--> (t)
--10--20--> (t)
...
--10--20--30--40--50--> (t)
--10--20--30--40--50--60--> (t)
--20--30--40--50--60--70--> (t)
--30--40--50--60--70--80--> (t)
и так далее.

Сергей М. ©   (11.12.07 16:56) [10]
Т.е формировать серию только из тех точек, которые относятся к интересующему тебя диапазону аргументов визуализируемой ф-ции ?

По всей видимости, график не формируется в каждый момент заново, а просто добавляется новая точка, поэтому изначально формировать "как надо" не получится в принципе. Если только каждый раз выбрасывать все данные и потом "забивать" скорректированные. Что, imho, не очень красиво.

Наверняка Chart'у можно задать "логическую" (т.е. в единицах оси абсцисс) ширину отображаемого "окна", что, собственно, автору и нужно.


Kesha   (2007-12-11 17:08:00) [12]


> Label1.Caption:=FormatDateTime('hh, Time);


Label1.Caption:=FormatDateTime('hh ', Time);


Kesha   (2007-12-11 17:07:00) [13]

Label1.Caption:=FormatDateTime('hh, Time);
Отсюда разберись что тебе надо


cvg   (2007-12-11 17:05:00) [14]

Объясняю: чарт рисует 4 графика с частототй точка в секунду. Примерно через час точек в оперативной памяти набирается столько, что график ворочается уже с трудом. Поэтому есть простой смысл удалять из чарта все, что старше часа. Логично?


Kolan   (2007-12-11 17:03:00) [15]

> То Kolan: То есть, предложение единственное: искать и удалять
> те точки, которые остоят от текущего времени больше, чем
> на час?

Нет, вы забыли в сабже слово за последний.

Хронить точки отдельно, а при необходимости чарт стирать и рисовать на нем нужное(в данном случае за последний час).


Германн   (2007-12-11 17:00:00) [16]

Опять кто-то не может справится с надыбанным где-то примером.


Сергей М.   (2007-12-11 16:56:00) [17]


> cvg   (11.12.07 16:50) [8]


> искать и удалять


Зачем это делать, если их можно просто не задавать изначально ?
Т.е формировать серию только из тех точек, которые относятся к интересующему тебя диапазону аргументов визуализируемой ф-ции ?


DiamondShark   (2007-12-11 16:53:00) [18]

Почему единственное?
Вот ещё хорошее предложение: не создавать лишних точек. Тогда и удалять не придётся.

Но это всё гадание на кофейной гуще. Потому что только чёрт лысый знает, что там у тебя за точки, откуда берутся, и почему с ними такой конфуз приключился.


cvg   (2007-12-11 16:50:00) [19]

То Kolan: То есть, предложение единственное: искать и удалять те точки, которые остоят от текущего времени больше, чем на час?


DiamondShark   (2007-12-11 16:43:00) [20]


> Как сделать?

Русский язык выучить.
А то с таким уровнем владения речью, да ещё с Сергей М. в собеседниках -- хлебнёшь горя.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо