Мне нужен способ выровнять метки на двух отдельных осях, имея возможность контролировать значение «шага» (значение между метками), где обе оси начинаются с отметки 0 и заканчиваются другим максимальным значением.
Почему эта проблема:
Flot, в графическом пакете JS есть возможность выравнивать деления, но когда я это делаю, я не могу контролировать значение шага. Однако я могу напрямую управлять значением шага, но тогда я теряю возможность выравнивать деления. Однако я могу вернуться к определению своих собственных максимальных значений и значений шага, чтобы получить то, что мне нужно (выровнять деления при сохранении желаемого значения шага), но мне нужна помощь. уступив этот вопрос (подробности читайте дальше).
Пример
Пусть a будет максимальным значением по оси A, а b будет максимальным значением по оси B.
В этом примере пусть a = 30 и b = 82. Допустим, мне нужно 6 делений (не считая дополнительной деления в конце оси). На самом деле я угадал 6, попробовав несколько.
Когда у меня есть желаемое количество делений, я могу сделать что-то вроде этого:
- 30 / 6 = 5 (я просто выбираю нужное значение шага для оси A)
- Теперь нужно выяснить выравнивание галочки для оси B.
- 82 / 6 = 13,67 (не очень хорошее значение, я предпочитаю что-то более округлое)
- переместите максимальное значение B на 90 , где 90/6 = 15 (хорошо - я только что получил необходимое значение шага для оси B)
Конечный результат
Вход:
- а_макс = 30, б_макс = 82
- (на самом деле a_max может быть 28,5, 29,42, b_max может быть 84, 85,345 и т. д.)
Выход:
- a_adjusted_max = 30, b_adjusted_max = 90,
- а_шаг = 5, б_шаг = 15
- количество тиков = 6 (+1, если считать конец)
Визуальный:
|---------|---------|---------|---------|---------|---------> A
0 5 10 15 20 25 30
|---------|---------|---------|---------|---------|---------> B
0 15 30 45 60 75 90
Сводка "Требования"
- Нужно, чтобы
step value
для каждой оси было одним из 1, 2, 5, 10, 15, 20, 25, 50, 100 (в примере было 5 для A, 15 для B) - Нужно
adjusted max value
для каждой оси (в примере было 30 для A, 90 для B) - Нужно количество тиков до
match
для обеих осей - (необязательно) Количество тиков может варьироваться, но должно быть где-то от 4 до 12 в качестве оптимального значения.
- скорректированное максимальное значение равно или превышает исходное максимальное значение и расположено в «округленном числе» (т.е. 90 предпочтительнее 82, как в моем примере выше)
Проблемы (вопрос)
- Мне нужно удалить большую часть догадок и автоматизировать генерацию делений.
- то есть сначала мне нужен лучший способ получить количество делений, потому что я угадал количество делений, которое хотел выше, потому что мне нужно хорошее значение "шага", которое может быть примерно 1, 2, 5, 10, 15, 20, 25, 50, 100. Максимальные значения начинаются с 4 и могут доходить до 100. В более редких случаях доходят до 500. В большинстве случаев максимальные значения остаются между 30-90.
Как я могу это сделать?