有可能以某种方式使用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可能是一个免费的绘图解决方案。我需要它在服务器端工作。
任何解决方案?