Вывод числовых значений на графике. Как ?

cdi

Новичок
Вывод числовых значений на графике. Как ?

Здравствуйте!
Срочно нужно сдать заказчику работу, а тут небольшая проблема. По сути:
Необходимо показать на графике точки, вблизи к-х нужно указать значения как абсциссы так и ординаты. Порылся я в доке к jpgraph ( к стате, использую jpgraph-1.13 ), а решение не нашёл. Вывод значения одной только ординаты без проблем ( отображается как “(5)”,”(1)”,”(9)”,… ):

PHP:
<?php  
include "../jpgraph.php";  
include "../jpgraph_scatter.php";    
$xdata = array(1,3,5,7,9,12,15,17.1); 
$ydata = array(5,1,9,6,4,3,19,12);    
$g = new Graph(300,200);  
$g->SetScale('linlin'); 
$splot = new ScatterPlot($ydata,$xdata);  
$splot->value ->Show();  
$splot->value->SetFormat('(%0.0f)');  
$splot->value->SetMargin(10);  
$g->Add($splot);  
$g->Stroke();  
?>
А вот как организовать вывод возле точки текста, примерно такого содержания “(1;5)”, (“3;1”), т.е. как абсциссы, так и ординаты. Я не знаю. Заказчик требует только такого представления. Переходить с jpgraph на что-то другое нельзя – всё завязано именно на нём.
Можно было бы конечно оформлять в виде текста, указав конкретно координаты, но в моём случае снова нельзя – положение осей графика не фиксировано, тем самым угадать (расчитать) координаты текста, наверное не возможно :-(.
Залез я с исходник jpgraph.php, а там … - нет несил, не времени разбираться.
У кого-то возникала такая проблема ? Как её решить?
Вроде бы мелочь, а не хотелось из-за этого краснеть за свою работу перед заказчиком :-(

Заранее благодарен !
 

SiMM

Новичок
> положение осей графика не фиксировано, тем самым угадать (расчитать) координаты текста, наверное не возможно :-(
Как же плохо не учить в школе математики...
 

cdi

Новичок
А можно примитивный примерчик ?
Или хотябы в каком напрвлении рыть !
 

untied

Сдвинутый новичок
Рыть в направлении арифметики.
У тебя есть ось (не важно: x,y,z,t), ты знаешь математические координаты ее начала и конца (естественно, имеются в виду координаты отрезка оси, который показывается на графике), ты знаешь длину построенного на графике отрезка оси в пикселях, ты знаешь пиксельные координаты начала и конца этого отрезка на построенной картинке.

Из этих данных легко:
а) рассчитать пиксельные координаты любой точки на оси, чьи математические координаты известны;
б) рассчитать примерные математические координаты любого пиксела, лежащего на построенной оси.

Есть сомнения? ;)

Да, забыл напомнить: математические координаты по оси X увеличиваются слева направа, по оси Y -- снизу вверх; пиксельные координаты по оси X увеличиваются точно так же, в то время как по оси Y -- сверху вниз. Это обстоятельство тоже следует учитывать в расчетах.
 

cdi

Новичок
Честно говоря, проблема не в расчёте, как таковом, алгоритм и скрипт я уже, в принципе, настроил! Проблема в другом: значения точек заведомо не известно, и масштаб осей генерируется (выбирается) автоматически скриптом. Например, если значения точек для оси абсцисс: максимальное – 2.28 , минимальное – (-1.58), то скрипт переопределит ось от (-1.6) до 2.5. Можно конечно самому переопределять эти значения, что не есть, наверное, хорошо! Лучше бы было вытягивать их (эти округлённые значения) непосредственно из скрипта, проблема только в том, что я не могу разобраться в этих классах. Не поможете ?
 

untied

Сдвинутый новичок
В каких классах, блин? jpgraph?

Твоя задача решается без особых проблем средствами GD.
Создай пустую картинку требуемых размеров (предлагаю классический вариант: 640x480), назначай математические координаты для ее углов (в зависимости от строящегося отрезка графика) и черти себе на здоровье!

Кстати, картинку я бы выводил в PNG или GIF (а вовсе не в JPEG). Поскольку график -- это достаточно точная штука, то искажения, вносимые сжатием JPEG, в данном случае совсем ни к чему.
 

cdi

Новичок
Originally posted by untied
В каких классах, блин? jpgraph?
Да нет, мне кажеься, что Вы не правы !
На изображении постоянного размера, строятся графики, числовые значения на осях меняются, поэтому знать переопределённые скриптом значения необходимо, для корректного позиционирования текста !
Я не прав?

Кто нить может помочь с этими классами ?
 

untied

Сдвинутый новичок
Я прав, потому что решал такие задачки еще в 10 классе на компьютерах Yamaha MSX (а было это аж в 1991 году). И уже тогда мне было стыдно спрашивать подсказки у одноклассников.

Возьми милиметровку и поиграйся на бумаге.
Абсолютно без разницы, что пиксельные координаты картинки фиксированны, а координаты отрезков осей на графике могут варьироваться. Привязка математических координат к пиксельным и обратно делается с помощью элементарных арифметических действий (типа деления).

Единственная сложность при переводе координат -- это то, что оси Y имеют разные направления (об этом я уже говорил). И для твоих задач возможностей GD хватит выше крыши (в том числе и для того, чтобы делать подписи к координатным осям и точкам).

Бери калькулятор, милиметровку и черти, короче говоря!
 
Сверху