Подходящее расстояние маркера вдоль оси в плоттере - PullRequest
0 голосов
/ 04 декабря 2009

Я пишу 2D-плоттер, и вдоль оси X и Y у меня есть маркеры с напечатанными значениями. Теперь мой вопрос: как мне найти подходящие расстояния?

Мой метод (для числовой оси) пока:

  • Я знаю высоту оси на экране в пикселях
  • Выберите оптимальное расстояние между маркерами в пикселях (что хорошо выглядит на экране ...), например, 32 пикселя.
  • Пересчитать количество пикселей в значение оси (например, если ось составляет 320 пикселей, а диапазон оси составляет 0-40 ° C, значение равно 32 * (40/320) = 4. Таким образом, оптимальное расстояние 4 ° C.)
  • Начните с расстояния 1 ° C. Если расстояние больше оптимального расстояния, разделите его на два, пока не достигнете оптимального расстояния. И точно так же, если расстояние меньше оптимального расстояния, умножьте его на два, пока оно не станет больше оптимального расстояния.

Это работает, но не дает мне того же расстояния, которое я выбрал бы вручную. Например: если диапазон 0-1000, я бы выбрал одно из следующих расстояний:

  • 1000 (0, 1000
  • 500 (0, 500, 1000)
  • 250 (0, 250, 500, 750, 1000)
  • 200 (0, 200, 400, 600, 800, 1000)
  • 100 (0, 100, ..., 900, 1000)
  • 50 (0, 50, ..., 950, 1000)

и так далее ...

У вас есть какая-нибудь умная идея?

1 Ответ

2 голосов
/ 05 декабря 2009

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

Так, например, вычислите диапазон, затем нормализуйте его до диапазона 1-100, затем найдите ближайшее значение в вашей справочной таблице и используйте это расстояние.

Если у вас есть Excel, вы можете посмотреть на результаты, которые они создают, и посмотреть, сможете ли вы извлечь из этого полезный алгоритм, хотя я часто нахожу, что мне нужно вручную переопределить расстояния, которые Excel выдает для ясности. Может оказаться, что ручное переопределение является важной функцией и для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...