2013-04-03 98 views
0

我想用jpgraph创建一个线图。JPGraph(php)line plot - scale scale的问题

我有一个显示图的问题 - 我收到的错误信息是:“JPGraph错误:25044 =不能使用自动缩放,因为无法确定y轴的有效最小/最大值(仅空值)。”

我的代码如下:

<?php // content="text/plain; charset=utf-8" 
session_start(); 
require_once ('../includes/jpgraph/src/jpgraph.php'); 
require_once ('../includes/jpgraph/src/jpgraph_line.php'); 
// Some data 
$datay1 = $_SESSION['userValues']; 
$d = array(); 
for($i = 0; $i < 30; $i++) 
    $d[] = date("d", strtotime('-'. $i .' days')); 

// Create the Line Graph. 
$graph = new Graph(300,250); 
$graph->SetScale("textlin"); 

$theme_class=new UniversalTheme; 

$graph->SetTheme($theme_class); 
$graph->img->SetAntiAliasing(false); 
$graph->title->Set('Your Performance:'); 
$graph->SetBox(false); 

$graph->img->SetAntiAliasing(); 

$graph->yaxis->HideZeroLabel(); 
$graph->yaxis->HideLine(false); 
$graph->yaxis->HideTicks(false,false); 

$graph->xgrid->Show(); 
$graph->xgrid->SetLineStyle("solid"); 
$graph->xaxis->SetTickLabels($d); 
$graph->xgrid->SetColor('#E3E3E3'); 

// Create the first line 
$p1 = new LinePlot($datay1); 
$graph->Add($p1); 
$p1->SetColor("#6495ED"); 
$p1->SetLegend('Line 1'); 

$graph->legend->SetFrameWeight(1); 

// Output line 
$graph->Stroke(); 

?> 

我想我可能出了毛病分配为x轴(我想显示最近30天)的日期。数据通过使用会话进行传递并进行测试以确保其中包含实际数据。

感谢

回答

0

尝试做以下,并看看该网页http://jpgraph.net/doc/howto2.php

As usual we want to make sure that the scale of the X-axis covers our function exactly so we need to find out the min and max values along the X-axis and use them to manually set the scale.

$n = count($datax); 
$xmin = $datax[0]; 
$xmax = $datax[$n-1]; 

It's now time to setup the basic graph. This is very similair to waht we did before with the only difference that we use the SetMajtickPosition() method to avoid a NULL argument for the minor ticks which we are not interested in.

$graph->SetScale('linlin',0,0,$xmin,$xmax); 
$graph->title->Set('Example with manual tick labels'); 
$graph->title->SetFont(FF_ARIAL,FS_NORMAL,12); 
$graph->xaxis->SetPos('min'); 
$graph->xaxis->SetMajTickPositions($tickPositions,$tickLabels); 
$graph->xaxis->SetFont(FF_TIMES,FS_NORMAL,10); 
$graph->yaxis->SetFont(FF_TIMES,FS_NORMAL,10); 
$graph->xgrid->Show();