Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Цикл в jpgraph


Автор: safari 10.2.2009, 21:38
Существует слоенная диаграмма, построенная с помощью JpGraph и некий массив, состоящий из слов.
Надо на каждом слое диаграммы написать слово из массива. 

При обращении к конкретному элементу массива всё работает нормально, например $data2x[0].

Но как только пытаюсь создать цикл, чтобы последовательно подписывать слои, и обращаюсь к переменным $data2x[$i], график перестает отображаться. 
Естественно слоев и элементов массива одинаковое множество.

Помогите, пожалуйста  

Автор: lelik133 11.2.2009, 09:24
а можно сам код увидеть?

Автор: safari 11.2.2009, 09:46
Вот кусочек кода, попытаюсь обьяснить, чего хочу добиться. 
Существует столбцовая диаграмма, на неё накладывается линейная прозрачная диаграмма и с помощью маркеров делается надпись.

Код

$lplot = new LinePlot($data3y);
$lplot->SetColor('white@1');
$lplot->SetWeight(1);
$lplot->mark->SetType(MARK_FILLEDCIRCLE);
$lplot->mark->SetWidth(13);
$lplot->mark->title->Set("$data2x[0]");
$lplot->mark->title->SetColor("white");


Естественно, что в таком случае везде выводится первый элемент массива.
При обращение к массиву $data2x выводится array.
Как цикл организоват не знаю.
Если есть способ проще подскажите, пожалуйста, как это сделать, с JpGraph имею дело второй раз в жизни.

Автор: lelik133 11.2.2009, 10:58
Цитата

Как цикл организоват не знаю.

не знаете как организовать цикл вообще?

Автор: safari 12.2.2009, 11:11
Как цикл вообще конечно знаю smile
Как в этом конкретном случае, чтобы весь график чертился в цикле.
Все мои попытки заканчиваются неудачей.
Например,
Код

for ($i=0; $i < count($data3y); $i++)
    {
        $lplot = new LinePlot($data3y[$i]);
        $graph->Add($lplot);
    }

В этом случае графика нет, все другие графики отображаются нормально.
Если убрать цикл, график отображается.

Автор: safari 20.2.2009, 09:13
Получилось вот таким образом:
Код

for ($i=0; $i < count($data3y); $i++)
            { 
              $lplot = new LinePlot($data3y);
              $graph->Add($lplot);
             }

Автор: zlodeydunkan 13.3.2009, 06:00
попробуейте так 
Код

for ($i=0; $i < count($data3y); $i++)
            { 
              $lplot[$i] = new LinePlot($data3y);
              $graph->Add($lplot[$i]);
             }

а если хотите, чтобы у вас были разные показания, то 
Код

$lplot[$i] = new LinePlot($data3y[$i]);

Но у меня появлялась другая проблема - все что на графике есть конвертировал при помощи mb_convert_encoding, а легенда (LinePlot) не поддается.
Кто сталкивался, помогите решить эту проблему smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)