Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Автоматический выбор масштаба для графиков.

621
11 августа 2004 года
Бешеный кролик
151 / / 23.03.2004
Кто как делал? Поделитесь, пожалуйста.
Задача такая: Есть сетка, на оси ординат всегда десять делений. Нужно, чтобы шаг был "хорошим", т.е. такого вида: 1, 2, 1.5, 0.003, а не такого: 0.342354. Кроме того, нужно чтобы график заполнял почти всю сетку, а не ютился где-нибудь внизу.

Я пока придумал следующее:

берем max и min графика, вычисляем delta=max-min. Если delta по модулю больше 9 (т.к. 10 делений), то вычисляем k=delta/9 (т.е. целочисленное делние) и rem=delta%9 (остаток). Если k меньше rem, то делаем delta++, пока он не станет больше rem, при этом к становится искомым шагом по оси ординат.

Если delta по модулю меньше 9, то делаем практически то же самое с небольшими изменениями (вначале умножаем delta достаточное число раз на 10).

Хотя мой алгоритм во многих случаях дает то что надо, все же иногда шаг выбирается неоптимально.
У меня есть подозрение, что все можно сделать более остроумно. Посоветуйте плиз...
621
12 августа 2004 года
Бешеный кролик
151 / / 23.03.2004
В принципе, меня посетила более простая идея:

беру разность между max и мин, делю на десять, определяю порядок p получившегося числа. Т.е. для 8.2341 это 1, для 198.45 - это 3, для 0.08745 - это -2. А затем округляю в большую сторону до порядка p-2. Получаю соответственно 8.24, 199, 0.0875 и т.п. Не очень красиво, но лучшего придумать не могу.
Если кто-то делал автоматический выбор шага - отзовитесь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог