dateaxisex1.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php // content="text/plain; charset=utf-8"
    require_once ('jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph_line.php');

    // The callback that converts timestamp to minutes and seconds
    function TimeCallback($aVal) {
        return Date('H:i:s',$aVal);
    }

    // Fake some suitable random data
    $now = time();
    $datax = array($now);
    for( $i=0; $i < 360; $i += 10 ) {
        $datax[] = $now + $i;
    }
    $n = count($datax);
    $datay=array();
    for( $i=0; $i < $n; ++$i ) {
        $datay[] = rand(30,150);
    }

    // Setup the basic graph
    $graph = new Graph(324,250);
    $graph->SetMargin(40,40,30,70);
    $graph->title->Set('Date: '.date('Y-m-d',$now));
    $graph->SetAlphaBlending();

    // Setup a manual x-scale (We leave the sentinels for the
    // Y-axis at 0 which will then autoscale the Y-axis.)
    // We could also use autoscaling for the x-axis but then it
    // probably will start a little bit earlier than the first value
    // to make the first value an even number as it sees the timestamp
    // as an normal integer value.
    $graph->SetScale("intlin",0,200,$now,$datax[$n-1]);

    // Setup the x-axis with a format callback to convert the timestamp
    // to a user readable time
    $graph->xaxis->SetLabelFormatCallback('TimeCallback');
    $graph->xaxis->SetLabelAngle(90);

    // Create the line
    $p1 = new LinePlot($datay,$datax);
    $p1->SetColor("blue");

    // Set the fill color partly transparent
    $p1->SetFillColor("blue@0.4");

    // Add lineplot to the graph
    $graph->Add($p1);

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