jpgraph - SetCenter 不起作用
jpgraph - SetCenter does not work
大家新年快乐,
今天我下载了 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。
希望有人能帮我解决这个问题。
早上好,
我发现了问题。函数
$p1->SetCenter(0.35,0.5);
会正确执行。但问题出在主题 classes 上。在此 classes 中,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;
}
...
}
}
在文件夹 themes 中创建一个新主题 class。主题class会像下面的例子那样被调用
取消链接("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);
$themeClass = new KartTheme;
$graph->SetTheme($themeClass);
大家新年快乐,
今天我下载了 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。
希望有人能帮我解决这个问题。
早上好,
我发现了问题。函数
$p1->SetCenter(0.35,0.5);
会正确执行。但问题出在主题 classes 上。在此 classes 中,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;
}
...
}
}
在文件夹 themes 中创建一个新主题 class。主题class会像下面的例子那样被调用
取消链接("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);
$themeClass = new KartTheme; $graph->SetTheme($themeClass);