Построение графика. Чем больше значение, тем меньше шаг.

GamletOrtikov
На сайте с 26.08.2011
Offline
95
1389

Всем привет.

Который день решаю проблему и не могу найти ответ. Прошу помочь.

Есть график дохода в виде столбца, высотой 300 пикселей. В этом графике может быть значение от 500 рублей до 200 000 рублей. В графике иногда показывается как и минимальное значение, так и максимальное. Но т.к. разница между ними очень велика, то график слишком сильно "прыгает" и не удаётся значения вписать в заданную высоту. Другими словами при 500 рублях график слишком маленький, а при 200 000 рублей график слишком большой.

Подскажите как сделать так, чтобы устранить эту проблему? Нужен именно PHP-код, который в итоге в переменную запишет высоту в пикселях, например от 20 пикселей при 500 рублях и до 300 пикселей при 200 000 рублях. Разумеется с промежуточными интервалами.

Была идея, что чем больше значение, тем меньше должен быть шаг, но не знаю на сколько она правильная и реализуемая.

В общем, прошу помочь ))

Покупаем вкладыши TURBO (https://vk.com/fantiki_turbo)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Так в чём именно проблема?

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

Если вы хотите на одном графике отображать значения, сильно разнящиеся по величине, то читайте про логарифмический масштаб.

Лог в помощь!
GamletOrtikov
На сайте с 26.08.2011
Offline
95
#2

Скорее вот это

[umka:
;14654729]Если вы хотите на одном графике отображать значения, сильно разнящиеся по величине, то читайте про логарифмический масштаб.

Как это реализовать через PHP, есть какие-то примеры? А то мои знания пока не на столько велики.

[umka]
На сайте с 25.05.2008
Offline
456
#3
tommy-gung
На сайте с 22.11.2006
Offline
287
#4

зачем именно на php? - есть же полно готовых js-библиотек

Здесь не могла быть ваша реклама
Z0
На сайте с 03.09.2009
Offline
759
#5

Логарифм, не? Если я правильно понял... :p

А, опоздал, umka опередил :)

GamletOrtikov
На сайте с 26.08.2011
Offline
95
#6

[umka], я извиняюсь за глупость, но по поиску выдаёт какие-то решения, которые по-моему завязаны с библиотеками, рисующими графики. Мне необходима просто функция, которая выдаст просто значение в пикселях как я описал в первом посте, а дальше я уже сам всё натяну как мне требуется. Мне нужно просто нарисовать один столбец высотой от 20 до 300 пикселей с помощью HTML и CSS, я всё это уже сделал. Но высота очень сильно прыгает в зависимости от введёной суммы.

tommy-gung, мне нет смысла подключать какую-то библиотеку, ради отображения простого столбца ))

ziliboba0213, да, я тоже думаю что логарифм, но мне необходим простой пример на PHP, чтобы понять как и что делать в моём случае.

[umka]
На сайте с 25.05.2008
Offline
456
#7

Функция выглядит примерно так:

f(x)=log10(x)·k

где k — коэффициент масштабирования по вертикальной оси.

На языке PHP получится, например, так:

$y=log($x,10)*100;

GamletOrtikov
На сайте с 26.08.2011
Offline
95
#8

[umka], отлично!! Кое-как подобрал значения, кое-что подправил и в принципе всё заработало ))

Огромное спасибо ))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий