112 / 86 / 21
Регистрация: 06.06.2011
Сообщений: 427
Записей в блоге: 1

График с большим количеством данных

01.08.2015, 14:05. Показов 6679. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем.
Возникла задача - отобразить на графике большое количество данных - порядка 100 тысяч точек.
При этом пользователь хочет активно изучать эти данные: приближать, удалять, скролить.
Есть какие-нибудь готовые алгоритмы для этого? Нужно как-то налету прореживать точки, и не выводить их все на экран.

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2015, 14:05
Ответы с готовыми решениями:

Qwt. График с большим количеством точек
Уверен, что проблема решается просто, но она есть: точек графика - 4 320 000 штук. Хочу смотреть на весь график в целом. Если начать...

Работа с большим количеством данных
Есть форма добавления нового рабочего, примерно 40 полей... Передаются они постом. Первые 10 я описал ручками, ибо они обязательны и там...

Работа с графиком и большим количеством данных
Добрый день. Есть приложение для обработки приходящих в COM-порт данных и вывода их на экран. Данные приходят регулярно (около 70 значений...

9
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
01.08.2015, 15:40
Вопрос задан в самой общей постановке. Давайте
допустим, что мы имеем файл с числовыми данными.
Ваши 100 тысяч строк. Это несложно написать
программу, которая будет автоматически перерисовывать
нужный вам график в каждом случае изменения масштаба.
Я этим правда мало занимался, но если допустим вам надо
500 точек из 100 000, то программа в данном случае просто
вычислит, что надо рисовать одну точку из двухсот.
Мне приходилось делать графический калькулятор.
Это конечно не совсем то, что вам надо....
Было бы неплохо, если бы вы задали форму хранения
данных и форму их предполагаемого расположения.
На конкретные данные можно дать конкретный совет.
0
112 / 86 / 21
Регистрация: 06.06.2011
Сообщений: 427
Записей в блоге: 1
01.08.2015, 16:19  [ТС]
Данные - это просто количественная характеристика некоего процесса (например, температуры), привязанная ко времени.
Если данных много, то работа становится очень медленной, потому что на любой чих пользователя надо опять просмотреть все точки, выяснить, какие из них попали в зону видимости и отрисовать. Получается дико медленно. Может есть какие-нибудь структуры для кэширования, но ведь не будешь каждый масштаб кэшировать (просто никакой оперативки не хватит)?
Не знаю даже к какой стороне подойти к этой задаче.
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
01.08.2015, 18:59
Если чисел 100 тысяч, да хоть 100 миллионов, то
в этом случае подходит файл прямого (произвольного)
доступа. К каждому числу можно обращаться
независимо от наличия или отсутствия других чисел
(данных). Именно с файлами производят самые
громоздкие вычисления, когда иной памяти просто нет.
0
1974 / 830 / 115
Регистрация: 01.10.2012
Сообщений: 5,019
Записей в блоге: 2
02.08.2015, 11:04
Ну 100K по нынешним временам не объем, это просто помещается в память, и тут проходят если не все то многие усреднения "окном" и.т.п. Ну да ладно, это непринципиально, нехватка ресурсов всегда возможна. "Просто прореживание" - рисуем 1 точку из N считанных из файла. Точка должна выбираться случайно, это важно. Напр выбирая точки так 5, 105, 205 ... Вы рискуете получить искаженное представление. Разумеется рисуем только ту часть что видима в окне, и, если надо, кешируем чтение файла.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
03.08.2015, 01:25
Igor3D, что значит "на графике"? Подозреваю что Вы работаете с чем-то вроде png/jpg/etc. Если так, то это ошибочный путь. Вам надо векторная графика. Исходники можно посмотреть в geda, kicad.
0
112 / 86 / 21
Регистрация: 06.06.2011
Сообщений: 427
Записей в блоге: 1
03.08.2015, 08:35  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Подозреваю что Вы работаете с чем-то вроде png/jpg/etc. Если так, то это ошибочный путь
Я использую OXYPlot, но это в данном случае не принципиально.

Цитата Сообщение от Igor3D Посмотреть сообщение
Точка должна выбираться случайно, это важно. Напр выбирая точки так 5, 105, 205 ... Вы рискуете получить искаженное представление.
А если выбирать точку случайно, я искажений не получу?
0
1974 / 830 / 115
Регистрация: 01.10.2012
Сообщений: 5,019
Записей в блоге: 2
03.08.2015, 09:58
Цитата Сообщение от aaleksander Посмотреть сообщение
А если выбирать точку случайно, я искажений не получу?
Тоже получите , но они будут некоррелированы
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
03.08.2015, 11:29
Цитата Сообщение от aaleksander Посмотреть сообщение
100 тысяч точек
"Ни о чем". Держите исходный массив floats в памяти. Могу порекомендовать "A 2D Lite Graph Control with Multiple Plot Support".

Multi-Zoom готовый, скролл делается элементарно.
0
112 / 86 / 21
Регистрация: 06.06.2011
Сообщений: 427
Записей в блоге: 1
03.08.2015, 17:31  [ТС]
Спасибо всем. Решил при помощи кэширования. При отрисовке выбираю ближайший масштаб (в качестве ключа - количество точек на пиксель) и беру точки оттуда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.08.2015, 17:31
Помогаю со студенческими работами здесь

Не работает код с большим количеством данных
Добрый день, в бд много миллионов записей, и их обработать все зараз не получается, решил их обрабатывать по частям, но столкнулся с...

Создать файл-функцию с большим количеством данных
Мне нужно написать М-файл, где должны быть 4819 функций,я начала писать,вот что вышло: function f=myfun(x) for i=1:1:4819 ...

Оптимизация и автоматизация работы с большим количеством данных
Прошу прощения за краткость в названии темы, но коротко ее не опишешь. Дело вот в чем. Мой отец - заядлый коллекционер, и у него...

Кто работал с большим количеством данных и загружал их в Grid?
У меня более 6000 тыс. позиций. Как можно быстро отобразить их в гриде (без элемента Data) и закрыть Recordset? Спасибо.

Сделать ProgressBar при зависании формы (работа с большим количеством данных)
Здравствуйте, нужно сделать progress bar на исполнение кода. Суть в том, что иде работа с большими файлами и форма зависает при выполнении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru