![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить чарт отображать только последний час? [D7, XP]
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]
> Как сделать?
Русский язык выучить.
А то с таким уровнем владения речью, да ещё с Сергей М. в собеседниках -- хлебнёшь горя.