ISN (services de réseaux sociaux internationaux - applications interactives et sites web dynamiques)



Statistiques et compteurs: Graphique Maker Fonction


Graph Maker Function

 
function GraphRows($rows, $opts) 
#  options 
#     
#    box_x_size: width of values area 
#    box_y_size: height of the values area 
#    x_size: total width of the graph 
#    y_size: total height of the graph 
#    x_val: array element of record to assign as x_value 
#    y_val: array element to assign as y_value 
#    x_label: label for the Bottom of the graph 
#    y_label: label for the left side 
#    font: font number to use from system 
#    font_file: file to use as the font 
#    show_x_val: true == show X value of each bar with the y_label 
#    show_y_val: true == show Y value labels 
#    title: string for top of graph 
#    bar_color: color array to use for bars 
#    box_color: color to use for the box edging and value box. 
#    label_color: color for the labels 
#    val_color: color to to use for the values 
#    title_color: color to use for the title. 
#    bg_color: color for the background. 
#    bg_trans: make the background transparant. 
#    img_format: can be "png", "gif", or "jpg". 
 
  $defaults = array("show_x_val" => 1, 
            "show_y_val" => 1, 
            "show_y_lines" => 1, 
            "font" => 1, 
            "x_val" => NULL, 
            "y_val" => NULL, 
            "title" => NULL, 
            "x_label" => NULL, 
            "y_label" => NULL, 
            "x_title" => NULL, 
            "y_title" => NULL, 
            "x_slant" => NULL, 
            "font_file" => NULL, 
            "x_size" => NULL, 
            "y_size" => NULL, 
            "box_x_size" => 300, 
            "box_y_size" => 200, 
            "right_margin" => 2, 
            "fg_color" => array(1,1,1), 
            "bg_color" => array(232, 226, 202), 
            "bg_trans" => NULL, 
            "bar_color" => array(128, 128, 128), 
            "box_color" => NULL, 
            "val_color" => NULL, 
            "title_color" => NULL, 
            "return" => NULL, 
            "img_format" => "png"); 
  foreach($defaults as $opt => $val) 
  { 
    if(!array_Key_exists($opt, $opts)) 
      { 
    $opts["$opt"] = $val; 
      } 
  } 
  if($opts["font_file"]) 
    { 
      $opts["font"] =imageloadfont($opts["font_file"]); 
    } 
  $font_y = imagefontheight($opts["font"]); 
  $font_x = imagefontwidth($opts["font"]); 
   
#the boxed area with be 2 from the top and right, 30 from the left, and 12 from the bottom. 
# the border will be 1px wide. 
  $max_x = 0; 
  $max_y = 0; 
  $longest_x = 0; 
  $longest_y = 0; 
  $x_mod = 1.3; 
  $y_mod = 1.3; 
   
# find the longest x and y value str lengths for the label margin size. 
  foreach($rows as $idx => $row) 
  { 
    $y_val = $row; 
    $x_val = $idx; 
    if(is_array($row)) 
      { 
    foreach($row as $idx => $val) 
    { 
      $y_val = $val; 
      break; 
    } 
    if($opts["y_val"]) 
      { 
        if(array_key_exists($opts["y_val"], $row)) 
          { 
        $y_val = $row[$opts["y_val"]]; 
          } 
      } 
 
    if($opts["x_val"]) 
      { 
        if(array_key_exists($opts["x_val"], $row)) 
          { 
        $x_val = $row[$opts["x_val"]]; 
          } 
      } 
      } 
    if($y_val > $max_y) 
      { 
    $max_y = $y_val; 
      } 
    if($x_val > $max_x) 
      { 
    $max_x = $x_val; 
      } 
    $y_len = strlen($y_val); 
    $x_len = strlen($x_val); 
    if($y_len > $longest_y) 
      { 
    $longest_y = $y_len; 
      } 
    if($x_len > $longest_x) 
      { 
    $longest_x = $x_len; 
      } 
  } 
  $left_margin = 0; 
  $bottom_margin = 0; 
  $top_margin = $font_y * ($y_mod/2); 
  if($opts["title"] != NULL) 
    { 
      $top_margin = $font_y * $y_mod + $font_y * ($y_mod/2); 
    } 
  if($opts["show_x_val"]) 
    { 
      $bottom_margin += $font_y * $y_mod; 
      if($opts["x_slant"]) 
    { 
      $bottom_margin += $font_x * $longest_x - $font_y * $y_mod; 
    } 
    } 
  if($opts["show_y_in_x"]) 
    { 
      $bottom_margin += $font_y * $y_mod; 
    } 
  if($opts["x_title"]) 
    { 
      $bottom_margin += $font_y * $y_mod; 
    } 
  if($opts["show_y_val"]) 
    { 
      $left_margin += $font_x * $x_mod * $longest_y; 
    } 
  if($opts["y_title"]) 
    { 
      $t_margin = $font_y * $y_mod + $font_y * ($y_mod/2); 
      $l_margin = $font_x * $x_mod * strlen($opts["y_title"]); 
      if($t_margin > $top_margin) 
    { 
      $top_margin = $t_margin; 
    } 
      if($l_margin > $left_margin) 
    { 
      $left_margin = $l_margin; 
    } 
    } 
# we have to calculate the x and y image and box sizes depending on which is present. 
  # img sizing overrides the box size; 
  if($opts["x_size"]) 
    { 
      $opts["box_x_size"] = $img_x - $left_margin - 2 - $opts["right_margin"] ; 
   } 
  else 
    { 
      $opts["x_size"] = $left_margin + $opts["box_x_size"] + 2 + $opts["right_margin"]; 
    } 
  if($opts["y_size"]) 
    { 
      $opts["box_y_size"] = $img_y - $top_margin - 2 - $bottom_margin; 
    } 
  else 
    { 
     $opts["y_size"] = $top_margin + 2 + $opts["box_y_size"] + $bottom_margin; 
    } 
 
  $box_top = $top_margin+1; 
  $box_bottom = $box_top + 2 + $opts["box_y_size"]; 
  $box_left = $left_margin+1; 
  $box_right = $box_left + $opts["box_x_size"]; 
  $img =  imagecreate($opts["x_size"]+1, $opts["y_size"]+1); 
  list($r, $g, $b) = $opts["bg_color"]; 
  $bg_color = imagecolorallocate($img, $r, $g, $b); 
  if($opts["bg_trans"]) 
    { 
      imagecolortransparent($img, $bg_color); 
    } 
  list($r, $g, $b) = $opts["fg_color"]; 
  $fg_color = imagecolorallocate($img, $r, $g, $b); 
  if(is_array($opts["val_color"])) 
    { 
      list($r, $g, $b) = $opts["val_color"]; 
    } 
  $box_color = $fg_color; 
  if(is_array($opts["box_color"])) 
    { 
      list($r, $g, $b) = $opts["box_color"]; 
      $box_color = imagecolorallocate($img, $r, $g, $b); 
    } 
  $bar_color = $fg_color; 
  if(is_array($opts["bar_color"])) 
    { 
      list($r, $g, $b) = $opts["bar_color"]; 
      $bar_color = imagecolorallocate($img, $r, $g, $b); 
    } 
  $title_color = $fg_color; 
  if(is_array($opts["title_color"])) 
    { 
      list($r, $g, $b) = $opts["title_color"]; 
      $title_color = imagecolorallocate($img, $r, $g, $b); 
    } 
  $val_color = $fg_color; 
  if(is_array($opts["val_color"])) 
    { 
      list($r, $g, $b) = $opts["val_color"]; 
      $val_color = imagecolorallocate($img, $r, $g, $b); 
    } 
  imagerectangle($img, 0, 0, $opts["x_size"], $opts["y_size"], $box_color); 
  imagerectangle($img, $box_left, $box_top, $box_right, $box_bottom, $box_color); 
  $num_records = count($rows); 
# lets find the next item up. 
# find the maximal marker. 
 
  $finder = $max_y;   
  $multiple = 1; 
  while($finder > 10) 
    { 
      $finder = $finder/10; 
      $multiple *= 10; 
    } 
  $oldfinder =$finder; 
  $finder = round($finder); 
  if($finder < $oldfinder) 
    { 
      $finder++; 
    } 
# ok, so we have UP to 10 marks. 
  $num_marks = $finder; 
  $max_y = $finder * $multiple; 
 
  $xspan = ($opts["box_x_size"] - $num_records -1)/$num_records; 
  $yspan = $opts["box_y_size"]/$num_marks; 
 
  for($x=$num_marks;$x>=0;$x--) 
    { 
      if($opts["show_y_lines"]) 
    { 
      imageline($img, 
            $box_left, ($x*$yspan)+$top_margin+1, 
            $box_right, ($x*$yspan)+$top_margin+1, 
            $box_color); 
    } 
      if($opts["show_y_val"]) 
    { 
      $text = ($num_marks - $x)*$multiple; 
      imagestring($img, $opts["font"], 
              $left_margin - strlen($text)*$x_mod*$font_x, 
              ($x*$yspan)+$top_margin-($font_y/2)+2, 
              $text, $box_color); 
    } 
    } 
  if($opts["title"]) 
    { 
      $txtlen = strlen($opts["title"]) * $font_x; 
      $left = $opts["box_x_size"]/2 - $txtlen/2 + $left_margin +1; 
      $top = $font_y * $y_mod / 3; 
      imagestring($img, $opts["font"], $left, $top, $opts["title"], $title_color); 
    } 
  if($opts["y_title"]) 
    { 
      $txtlen = strlen($opts["y_title"]) * $font_x; 
      $left = $left_margin / 2 - $txtlen / 2; 
      $top = $font_y * $y_mod / 3; 
      imagestring($img, $opts["font"], $left, $top, $opts["y_title"], $title_color); 
    } 
  if($opts["x_title"]) 
    { 
      $left = $left_margin; 
      $top = $opts["box_y_size"] + $top_margin + $font_y * $y_mod / 3; 
      if($opts["show_x_val"]) 
    { 
      $top += $font_y * $y_mod; 
    } 
      if($opts["show_y_in_x"]) 
    { 
      $top += $font_y * $y_mod; 
    } 
      imagestring($img, $opts["font"], $left, $top, $opts["x_title"], $title_color); 
    } 
 
  $x_pos = 0; 
  foreach($rows as $idx => $row) 
  { 
    $y_value = $row; 
    $x_value = $idx; 
    if(is_array($row)) 
      { 
    if($opts["y_val"] && array_key_exists($opts["y_val"], $row)) 
      { 
        $y_value = $row[$opts["y_val"]]; 
      } 
    else 
      { 
        foreach($row as $var => $val) 
        { 
     
sdds
En utilisant ce site, vous acceptez l'utilisation de cookies pour personnaliser le contenu et les publicités, pour fournir des fonctionnalités de médias sociaux, pour analyser notre trafic en utilisant les services Google comme Analytics et Adsense.

Google Adsense et ses partenaires peuvent utiliser vos données pour la personnalisation de la publicité et les cookies peuvent être utilisés pour la publicité personnalisée et non personnalisée. Comment Google utilise mes données?
Veuillez utiliser le bouton suivant pour voir la liste des partenaires de Google ainsi que tous les détails concernant les cookies.
Voir les détailsJ'accepte
Ces cookies étant obligatoires pour le fonctionnement de , si vous ne les acceptez pas nous vous prions de quitter ce site
Vous avez le droit de refuser les cookies et quitter le site ou de les paramétrer.