用于服务器端方程的Gnuplot

时间:2016-11-30 09:42:52

标签: charts gnuplot

有可能以某种方式使用gnuplot在服务器端绘制图表并将图像投射到前端吗?没有js,如果可能的话。

我尝试使用pChart 1.26,但它在渲染大数据(~1000-1500点)方面存在问题 - 它大约需要30秒和时间 - 也许是因为我在我的本地PC上做过。

这是我尝试过的代码。

<?php
include("pChart/pData.class");
include("pChart/pChart.class");
error_reporting(0);

function arr_parser($arr, $par){
    $tmp = array(); 
    foreach ($arr as $dat){
        $tmp[] = $dat[$par];
    }
    return $tmp;
}
function graphPlotter(){

    $data = json_decode(file_get_contents('test.json'), true);

    $Data = new pData;
    // $Data->AddPoint(arr_parser($data["Point"], 'x'), "SerieX");
    $Data->AddPoint(arr_parser($data["Point"], 'y'), "SerieY");
    $Data->AddPoint(arr_parser($data["Point"], 'z'), "SerieZ");
    $Data->AddAllSeries();
    $Data->SetAbsciseLabelSerie();
    // $Data->SetSerieName("X","SerieX");
    $Data->SetSerieName("Y","SerieY");
    $Data->SetSerieName("Z","SerieZ");


    $Chart = new pChart(800, 300);
    $Chart->setFontProperties("Fonts/tahoma.ttf",8);
    $Chart->setGraphArea(50,30,750,260);
    $Chart->drawGraphArea(255,255,255,FALSE);
    $Chart->drawGrid(0,FALSE,230,230,230,50);
    $Chart->drawScale($Data->GetData(),$Data->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE,10);  

    $Chart->setFontProperties("Fonts/tahoma.ttf",6);
    $Chart->drawTreshold(0,143,55,72,TRUE,TRUE);
    $Chart->drawBarGraph($Data->GetData(),$Data->GetDataDescription(),TRUE);

    $Chart->setFontProperties("Fonts/tahoma.ttf",8);
    $Chart->drawLegend(596,144,$Data->GetDataDescription(),255,255,255);
    $Chart->setFontProperties("Fonts/tahoma.ttf",10);
    $Chart->drawTitle(50,22,"Example 12",50,50,50,585);
    $start = microtime(true);
    $Chart->Render("test.png");
}
$start = microtime(true);
graphPlotter();
$time = microtime(true);
echo '<pre>' . ($time-$start) . '</pre>';
?>

也许它没有得到很好的优化,但仍然太长了。

Gnuplot可能是一个免费的绘图解决方案。我需要它在服务器端工作。

任何解决方案?

0 个答案:

没有答案