2010-07-16 2 views
0

PEAR에서 Image_Graph라는 PHP 그래프 라이브러리를 사용하여 막대로 표시된 데이터의 점을 그래프로 나타냅니다. 하나의 데이터 포인트보다가있을 때 그래프는 잘 보이지만에만있을 때 하나의 데이터 포인트는 다음과 같습니다PEAR Image_Graph가 하나의 Datapoint 만있는 경우 올바르게 표시되지 않음

http://img594.imageshack.us/img594/2944/screenshot20100715at528s.png

은 다른 사람이 전에 PEAR의 Image_Graph이 문제가 발생 했습니까? 누구든지 수정 사항을 알고 있습니까? SVN의 복사본뿐만 아니라 Image_Graph의 최신 버전을 사용하여 시도했다. 나는이 Image_Graph와 버그를 가지고있다 생각

public function drawGraph() { 
    $canvas =& Image_Canvas::factory('png', array('width' => 775, 'height' => 410, 'antialias' => true)); 
    $graph =& Image_Graph::factory('graph', $canvas); 

    $font =& $graph->addNew('ttf_font', 'lib/fonts/Helvetica_Neue.ttf'); 
    $font->setSize(12); 
    $graph->setFont($font); 

    $plotarea =& $graph->addNew('plotarea'); 
    $dataset =& Image_Graph::factory('dataset'); 

    foreach ($this->getResults() as $res) { 
    $dataset->addPoint($res['name'], $res['value']); 
    } 

    $plot =& $plotarea->addNew('bar', &$dataset); 

    $axisTitle = $this->_resultType->getName() . " (" . $this->_resultType->getUnits() . ")"; 
    $axisY =& $plotarea->getAxis(IMAGE_GRAPH_AXIS_Y); 
    $axisY->setTitle($axisTitle, 'vertical'); 

    $filename = $this->_getFilename(); 
    return ($graph->done(array('tohtml' => 'true', 
     'filename' => GRAPHS_DIR . $filename))); 
} 

,하지만 난 그것을 할 수있는 곳 확실하지 않다 :

여기 내 그래프 코드입니다.

도움 주셔서 감사합니다. 하나의 값 Image_graph는 Y 축 위의 줄을 나타내는이 있다면 당신은 여전히 ​​답 :

필요한 경우

답변

0

확실하지 않다.

$ this-> getResults()에 무엇이 들어 있는지 알고 있으면 좋겠다. 'name'은 문자열이고 배열은 array('name' => '33_Toshiba_pPVT_16GB', 'value' => 16.66)과 같은 것으로 가정한다. X 축에 문자열이 있으면 범주 X 축을 생성합니다. 다음 최소 및 최대 X를 강제 이이

if(count($this->getResults()) == 1) 
    $dataset->addPoint('', 0); 

이 그것을 어떻게해야 해결하기 위해 $ 데이터 집합을 채우는 후 더미 값을 추가 할 수 있지만, x 축 선형 인 경우 ('이름'숫자입니다) - 축 값과 막대가 멋지게 표시됩니다. 당신이 Image_Graph 코드를 편집 할 경우

또는
$axisX =& $plotarea->getAxis(IMAGE_GRAPH_AXIS_X); 
$axisX->forceMinimum(1); 
$axisX->forceMaximum(3); 

, 여기에 수정이다 http://pear.php.net/bugs/bug.php?id=7423

PS : 난 단지 당신의 예

$plot =& $plotarea->addNew('bar', &$dataset); 

교체하여 얻을 수

$plot =& $plotarea->addNew('bar', array(&$dataset));