Функция, которая правильно устанавливает метки оси x из максимального значения оси x и заданной ширины галочки - PullRequest
0 голосов
/ 14 декабря 2018

Это должно быть относительно простым делом, но я не могу понять это прямо здесь.Я создаю PDF, и поэтому это не так просто, как использование координат

. То, что я делаю, - это создание оси x, которая больше значения max x по косметическим причинам.В моем примере максимальный x равен 19, но я хочу, чтобы максимальное значение на оси было 20

Хитрость заключается в том, что разрыв между точками на графикеустанавливаются исходя из количества точек и доступного пространства для графика

Выкладывая свой пример, я знаю следующие фрагменты информации:

  • max x = 19
  • максимальное значение оси x = 20
  • ширина оси x = 518,3
  • Количество отметок, которое я хочу = 10

Я думалбыло бы так же просто получить пробел между каждым тиком в цикле, который рисует маленькие отметки:

    interateXPositionsForEachTick := (xAxisWidth / xAxisMaxValue) * (xAxisMaxValue / NumberOfTickMarksOnXAxis)

В приведенном выше примере мы делаем:

(518.3 / 20) * (20 / 10)

Эта логика верна, не так ли?

Но, похоже, она не работает в моем цикле вообще:

xAxisTickPosition := startOfYAxis
for i := 1.0; i <= NumberOfTickMarksOnXAxis; i++ {

    LabelToUse := (xAxisMaxValue / NumberOfTickMarksOnXAxis) * i

    Line(xAxisTickPosition, placeYTickLocation, xAxisTickPosition, placeYTickLocation+tickmarkSize)

    xAxisTickPosition = xAxisTickPosition + interateXPositionsForEachTick

Но это не работает:

enter image description here

Кто-нибудь может увидеть, что я здесь не так делаю?Я сбит с толку

20 в конце устанавливается за пределами этого, но я хочу, чтобы эта функция могла в основном поставить 20 в том же месте Я установил его снаружи, чтобы ямогу проверить выравнивание моей функции

Я обнаружил, что она на 1,5 ширины слишком велика по сравнению с осью x:

При запуске, чтобы уменьшить ее на 15%:

interateXPositionsForEachTick := ((xAxisWidth / xAxisMaxValue) * (xAxisMaxValue NumberOfTickMarksOnXAxis)) * 0.85

Ось диаграммы выглядит правильно: enter image description here

20 выделено жирным шрифтом, поскольку оно перезаписано вне моей петли

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