Sida 1 av 1

Gnuplot problem.

Postat: 09 jul 2010, 21:45
av MB300E
Någon som använder gnuplot för att skapa diagram.
har labbat med jpgraph och nu testat gnuplot men har massor av problem

med jpgraph så kan jag skapa ett fint diagram men tyvär kan man bara ha ett diagram och ingen text. alltså ändast en .png blir det.

med gnuplot och denna code som är ett enkelt testscript.

Kod: Markera allt

<?php // content="text/plain; charset=utf-8"

include('gnuplot.php');


echo "<H1>testar vad det blir av detta</H1>";



$p = new GNUPlot();
$p->draw2DLine( 0,0, 1,1);
$data = new PGData('test Data');
$data->addDataEntry( array(1, 2) );
$data->addDataEntry( array(2, 3) );
$data->addDataEntry( array(3, 4) );
$data->addDataEntry( array(4, 4) );
$data->addDataEntry( array(5, 3) );

demoSampleFile();
$p->setTitle("2D Test");
$data2 = PGData::createFromFile('plot1.txt', 'data set II');

$p->plotData( $data, 'lines', '1:($2)' );
$p->set2DLabel("2D Label", 1,1 );
$p->plotData( $data2, 'linespoints', '($1/20):($2*2)' );

$data2->changeLegend( 'replot II' );

$p->plotData( $data2, 'boxes', '($1/20):($2)' );

//$p->set("autoscale");
$p->setRange('y', 0, 5);
$p->setSize( 0.6, 0.6 );
$p->export('test2D.png');

$p->close();


function demoSampleFile() {
    $fp = file_put_contents('plot1.txt', 
"10    0.093589504197705
20    0.18763678062534
30    0.28007895516094
40    0.3772850801436
50    0.45641177158072
60    0.5483119759646
70    0.64713177119153
80    0.73679384002403
90    0.82093219662338
100    0.89928340743387
110    0.9330042604089
120    0.91835632225303
130    0.77081887392486
140    0.56138136507401
150    0.35419806755938
160    0.19338611559021
170    0.097598541367033
180    0.048300839801159
");
}
?>
Får jag följande error.

Kod: Markera allt

Notice: Undefined variable: filename in /var/www/html/gnuplot.php  on line 72

Notice: Undefined variable: filename in /var/www/html/gnuplot.php on line 72

Notice: Undefined variable: filename in /var/www/html/gnuplot.php on line 72

Notice: Undefined variable: filename in /var/www/html/gnuplot.php on line 72

Notice: Undefined variable: filename in /var/www/html/gnuplot.php on line 72

Strict Standards: Non-static method PGData::createFromFile() should not be called statically in /var/www/html/test.php on line 23
Någon som har en aning om vad mitt problem är?

Kör en efterföljare till clarkconnect som heter clearos på servern.

Re: Gnuplot problem.

Postat: 10 jul 2010, 09:53
av larky
Du verkar använda ett till script, gnuplot.php?

Re: Gnuplot problem.

Postat: 11 jul 2010, 14:03
av MB300E
Det är en classfil eller hmm interface, vad man nu ska kalla det.
Funktionsfil till gnuplot för att komunicera mellan php och gnuplot.

coden fins här http://www.celeste.cn/PHP-GNUPlot/PHP_GNUPlot.htm

lite för mycke code för att klistra in här tycker jag.

Re: Gnuplot problem.

Postat: 12 jul 2010, 11:38
av MB300E
Ingen annan som använder gnuplot och kan ge en liten beskrivning på hur man får det att fungera med php och mysql?

Re: Gnuplot problem.

Postat: 12 jul 2010, 13:06
av fredrikw
MB300E skrev:Ingen annan som använder gnuplot och kan ge en liten beskrivning på hur man får det att fungera med php och mysql?
Har inte använt klassen du använder, men det ser ut att vara en typo på rad 72:

Kod: Markera allt

function addDataEntry( $entry ){
        if (!$filename) $this->DataList[] = $entry;
            else print "Error: Cannot add an entry into file content [ $this->filename ] !\n";        
    }
$filename borde vara $this->filename. Det ger iofs bara en Notice, men det verkar vara ett fel.

Det andra felet beror på att metoden createFromFile border deklareras statisk.

Kod: Markera allt

static function createFromFile($filename, $legend = '')  {
Troligen kör du en betydligt nyare version av PHP än vad gnuplot.php är skrivet för, och felhanteringen är lite kinkigare, även om det nog skulle gå att få tyst på den. Dock är det svårt att säga om det är detta som gör att det inte funkar.

Re: Gnuplot problem.

Postat: 13 jul 2010, 02:54
av MB300E
Fick det att fungera så nu är det bara grejja med databasen.
thx.

Re: Gnuplot problem.

Postat: 16 jul 2010, 14:53
av MB300E
Någon som har ett exempel på hur ni har gjort?

Re: Gnuplot problem.

Postat: 09 aug 2010, 05:02
av daromer
Jag meckade en hel del med detta en gång men hittar inte mina script just nu... hmmm

Re: Gnuplot problem.

Postat: 09 aug 2010, 05:06
av daromer
Typ så här:

Kod: Markera allt

3 include('gnu.php');
 4
 5 $p = new GNUPlot();
 6 //$p->draw2DLine( 0,0, 1,1);
 7
 8 $do=array('10361DA5010800C1','261D35EC0000007D','2886FDCA01000085','2848FECA01000047','287C10CB01000081');
 9
10 $w=1100;$h=600;
11 $fil='test.png';
12 $start='2010-04-21';
13 connectToDB();
14
15 $p->setTitle("2D Test");
16 //$p->draw2DLine( 0,10, 1,0);
17
18 #$data2 = PGData::createFromFile('ute', 'data set II');
19 #$data3 = PGData::createFromFile('acktank1', 'data set IiI');
20
21 $p->set2DLabel("Temperaturer", 1,1 );
22 $p->set("xdata time" );
23 $p->set("grid" );
24
25 #$p->setSize( 2, 1);
26 $p->setTics('y','5');
27 $p->setTics('x','3600');
28 $p->set('autoscale');
29 $p->set('xtics rotate');
30 $p->set('style fill solid');
31 $p->set('format x "%b/%d %H:%M"');
32 $p->set('tic scale 0.2');
33 $p->set('timefmt "%Y-%m-%d %H:%M:%S"' );
34
35
36
37 foreach ($do as &$sensor) {
38     $res=mysql_query("select dt,temp_c from temps where sensor_serial = '$sensor' and dt >'$start' order by dt     ", $db);
39     $res2=mysql_query("select longname from sensors where sensor_serial = '$sensor'", $db);
40     if ($result = mysql_fetch_array($res2)) $name=$result[0]; else $name="UNKNOWN";
41     $data = new PGData($name);
42     while ($result = mysql_fetch_array($res)) {
43             $data->addDataEntry(array($result['dt'],$result['temp_c']));
44     }
45
46 $p->plotData( $data, 'lines', '1:3' );
47 }
48 //$p->setRange('y', 0, 5);
49 $p->export($fil,$w,$h);
50
51 $p->close();
52
53 echo "<img src=\"$fil\">";
Och då använde ja den gnu.php som finns ute.

Har också gjort med eget men hittar de fasenimig inte.

Re: Gnuplot problem.

Postat: 09 aug 2010, 05:09
av MB300E
Tack, ska ta en titt på det där vid tillfälle.