2015-01-02 8 views
0

새해 복 많이 받으세요 여러분,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에서 변경해야 할 모든 설정이 있습니까 내 코드? 파이어 폭스 34와 함께 일하고 있지만 IE 11에서도 사용해 보았습니다.

누군가가이 문제를 해결하는데 도움이되기를 바랍니다.

+0

일부 HTML 파일을 추가 할 수 있습니까? PHP만으로 판단하는 것은 어렵습니다. – Patru

+0

전체 PHP 파일에 대한 답변을 추가했습니다. 그걸로 일할 수 있니? – FlorianB

+0

나는 나의 요구에 분명히 분명하지 않았다. 우리가 PHP 만 볼 수 있다면 브라우저가 어떤 HTML을 사용하고 있는지 판단하기가 어렵습니다. 브라우저에서 * 관련 * HTML을 요청했습니다. 질문을 답변으로 추가하는 대신 추가해야합니다 (모든 사용자가 자신의 질문을 수정할 수 있다고 생각합니다). – Patru

답변

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; 
     } 

     ... 
    } 
} 
<안녕, 시작 = "2">
  • 폴더 테마의 새로운 테마 클래스를 만듭니다. 테마 클래스는 다음 예제와 같이 호출됩니다.

    unlink ("program/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);

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