Ignore:
Timestamp:
01/23/08 17:37:32 (4 years ago)
Author:
bogdanpasoi@…
Message:

Better rating graph.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/views/plot_rating.php

    r852 r884  
    66if (2 <= count($history)) { 
    77    $keys = array_keys($history); 
    8     $range_start = $history[$keys[0]]['timestamp'] - 30*24*3600; 
    9     $range_end = $history[$keys[count($history)-1]]['timestamp'] + 30*24*3600; 
     8    $range_start = $history[$keys[0]]['timestamp']; 
     9    $range_end = $history[$keys[count($history)-1]]['timestamp']; 
     10    $rating_start = $history[$keys[0]]['rating']; 
     11    $rating_end = $rating_start; 
     12    foreach ($history as $round_id => $round) { 
     13        $rating_start = min($rating_start, $round['rating']); 
     14        $rating_end = max($rating_end, $round['rating']); 
     15    } 
     16    $rating_start = rating_scale($rating_start)-50; 
     17    $rating_end = rating_scale($rating_end)+50; 
    1018} 
    1119else { 
     
    1321    $range_start = mktime(1, 0, 0, 1, 1, 2004); 
    1422    $range_end = time(); 
     23    $rating_start = 0; $rating_end = 1000; 
    1524} 
    1625// compute months between date range to show as xtics 
    17 list($dy, $dm, $dd) = split('-', date('Y-m-d', $range_start)); 
     26list($dy, $dm, $dd) = split('-', date('Y-m-d', $range_end)); 
    1827$i = 0; 
    1928$xtics = array(); 
     29$scale = ceil(($range_end-$range_start)/(30*24*3600)/12); 
    2030while (true) { 
    21     $dx = mktime(1, 0, 0, $dm + $i, $dd, $dy);  
     31    $dx = mktime(1, 0, 0, $dm - $i, $dd, $dy);  
    2232    $xtics[] = date('Y-m-d', $dx); 
    23     if ($dx > $range_end) { 
     33    if ($dx < $range_start) { 
    2434        break; 
    2535    } 
    26     $i += 2; 
     36    $i += $scale; 
    2737} 
     38$xtics = array_reverse($xtics); 
    2839 
    2940// format date ranges for gnuplot 
    30 $range_start = date('Y-m-d', $range_start); 
    31 $range_end = date('Y-m-d', $range_end); 
     41$range_start = date('Y-m-d', $range_start - 15*24*3600); 
     42$range_end = date('Y-m-d', $range_end + 15*24*3600); 
    3243 
    3344// gnuplot script 
    3445$script = " 
     46set terminal postscript noenhanced 
     47set locale \"ro_RO.UTF-8\" 
    3548set xdata time 
    3649set timefmt \"%Y-%m-%d\" 
    3750set format x \"%b %y\" 
    38  
    39  
    4051set grid 
    4152 
    42 set rmargin 2 
     53set rmargin 5 
    4354set lmargin 5 
    4455set tmargin 12 
     
    5061 
    5162set style line 1 lt 1 lw 4 pt 3 ps 0.5 
    52 set style line 2 lt 3 lw 4 pt 7 ps 1. 
     63set style line 2 lt 3 lw 3 pt 7 ps 1.0 
    5364set style line 3 lt 11 lw 3 
    5465set xrange [\"{$range_start}\":\"{$range_end}\"] 
     66set yrange [{$rating_start}:{$rating_end}] 
    5567 
    5668set xtics ('".join("', '", $xtics)."') 
    5769set xtic rotate by -20 
    58  
    5970 
    6071set clip 
     
    6374// display round_id labels 
    6475$i = 1; 
     76$scale = ceil(($rating_end-$rating_start)/20); 
    6577foreach ($history as $round_id => $round) { 
    6678    $date = date("Y-m-d", $round['timestamp']); 
    67     $rating = rating_scale($round['rating']) + ($i % 2 ? 100 : -100); 
     79    $rating = rating_scale($round['rating']) + ($i % 2 ? $scale : -$scale); 
    6880    $align = ($i % 2 ? "left" : "right"); 
    6981    $align = "left"; 
    70     $script .= "set label {$i} \"{$i}\" at \"{$date}\",{$rating} {$align} font \"Helvetica,17\" back tc lt 9\n"; 
     82    $script .= "set label {$i} \"{$i}\" at \"{$date}\",{$rating} {$align} font \"Helvetica,19\" back tc lt 9\n"; 
    7183    $i++; 
    7284} 
     
    8395plot \\ 
    8496    \"%data%\" using 1:2 title \"Rating\" with lines ls 1, \\ 
    85     \"%data%\" using 1:2 smooth bezier title \"Medie\" with lines ls 3, \\ 
    86     \"%data%\" using 1:2:3 title \"Deviatie\" with errorbars ls 2 
     97    \"%data%\" using 1:2 notitle with points ls 2 
    8798"; 
    8899} 
Note: See TracChangeset for help on using the changeset viewer.