jpgraph — SetCenter не работает

С новым годом всех,

сегодня я скачал jpgrap и посмотрел примеры.
Я хочу создать круговую диаграмму с легендой слева и графиком справа.

В Интернете я обнаружил, что функция SetCenter должна перемещать график, но она не работает. График всегда отображается в центре.

Вот мой код

<?php
require_once ('jpgraph/src/jpgraph.php');
require_once ('jpgraph/src/jpgraph_pie.php');

$strSql = "SELECT
YEAR(Datum) AS JAHR
FROM kart_rundenzeiten_kopf
WHERE
BahnID = '".$_SESSION['KART_STATISTIK_BAHN_ID']."'
GROUP BY YEAR(Datum)
ORDER BY JAHR DESC";
$result = mysql_query($strSql) or die("MySQL-Error: ".mysql_error());

$strLR = 'L';

while ($row = mysql_fetch_assoc($result))
{
$intJahr = $row['JAHR'];

switch( $strLR )
{
case 'L':
{
$strFloat = 'left';
$strLR = 'R';
} break;

case 'R':
{
$strFloat = 'right';
$strLR = 'L';
} break;
}
?>
<div style="display:block; float:<?php echo $strFloat; ?>; width:49.5%;">
<div class="div_hauptbereich" style="display:block;">
<?php
$strSql2 = "SELECT
FLOOR( (A.Rundenzeit / 1000) ) AS RUNDENZEIT,
COUNT(*) AS ANZAHL
FROM kart_rundenzeiten_posten A
LEFT JOIN kart_rundenzeiten_kopf B ON A.BahnID = B.BahnID AND A.RundenID = B.KopfID
WHERE
B.BahnID = '".$_SESSION['KART_STATISTIK_BAHN_ID']."'
AND B.Strecke = '".$_SESSION['KART_STATISTIK_STRECKEN_ID']."'
AND YEAR(B.Datum) = '".$intJahr."'
GROUP BY FLOOR( (A.Rundenzeit / 1000) )
ORDER BY RUNDENZEIT";
$result2 = mysql_query($strSql2) or die("MySQL-Error: ".mysql_error());

$arrayData = array();
$arrayLegende = array();

while($row2 = mysql_fetch_assoc($result2))
{
$strZeit = Sekunden_In_Zeit( $row2['RUNDENZEIT'] );
$intAnzahl = $row2['ANZAHL'];

array_push( $arrayData, $intAnzahl );
array_push( $arrayLegende, $strZeit.' - '.$intAnzahl.'x' );
}

print_r($arrayData);

unlink("programme/kart/statistiken/charts/alle_zeiten_".$intJahr."_pie.png");

$graph = new PieGraph(670,400,"auto");
$graph->SetShadow();

$graph->title->Set($intJahr);
$graph->title->SetFont(FF_ARIAL,FS_BOLD,20);
$graph->title->SetColor('#4444FF');

$p1 = new PiePlot($arrayData);

$p1->SetSize(0.3);
$p1->SetCenter(0.35,0.5);

$p1->value->SetFont(FF_FONT1);
$p1->value->SetColor("black");

$p1->SetLabelType(PIE_VALUE_ABS);

$p1->value->SetFormat("%d");
$p1->value->HideZero();
$p1->value->Show();

$p1->SetLegends( $arrayLegende );
$graph->legend->Pos(0.73,0.05);
$graph->legend->SetColumns(2);

$graph->Add($p1);
$graph->Stroke("programme/kart/statistiken/charts/alle_zeiten_".$intJahr."_pie.png");
?>

<img src="programme/kart/statistiken/charts/alle_zeiten_<?php echo $intJahr; ?>_pie.png">
</div>
</div>
<?php
}
?>

Есть ли какие-либо настройки, которые я должен изменить в php?
Я работаю с Firefox 34, но я также попробовал его с IE 11.

Я надеюсь, что кто-то может помочь мне с этой проблемой.

0

Решение

Доброе утро,

Я нашел проблему. Функция

$p1->SetCenter(0.35,0.5);

будет выполнен правильно. Но проблема в тематических классах. В этих классах функция SetCenter сбрасывает положение.

В качестве решения есть разные возможности:
1. По умолчанию используется UniversalTheme.class.php, где вы можете удалить строку SetCenter. В моем случае это PiePlot-Case.

function ApplyPlot($plot) {
switch (get_class($plot))
{
...

case 'PiePlot':
{
$plot->SetCenter(0.5, 0.45);
$plot->ShowBorder(false);
$plot->SetSliceColors($this->GetThemeColors());
break;
}

...
}
}
  1. Создать новый класс темы в папке темы. Класс темы будет вызываться как в следующем примере

    разъединить ( «Программа / картинга / statistiken / графики / alle_zeiten _» $ intJahr «_ pie.png»..);

    $ graph = new PieGraph (670 400, «авто»);
    $ Graph-> SetShadow ();

    $ Graph-> Заголовок-> Set ($ intJahr);
    $ Graph-> Заголовок-> SetFont (FF_ARIAL, FS_BOLD, 20);
    $ Graph-> Заголовок-> SetColor ( ‘# 4444FF’);

    $ p1 = новый PiePlot ($ arrayData);

    $ themeClass = new KartTheme;
    $ Graph-> SetTheme ($ themeClass);

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]