用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php股票K线图生成代码

时间:2015-01-23  来源:西部数据  作者:西部数据

此程序实现php画柱状图,它的设计思想是:首先以用imagecreate()来生成一个空白图形,其程序实现如下,需要两种不同的颜色,正数一个 负数一个,一个数据数组,$path为保存图片的地址.

php股票K线图生成实例代码如下:

  1. <?php 
  2. $data = array ("-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24");  
  3. $colors = array (array (255,0,0 ),array (0,255,0 ) ); 
  4. $path = "gg15_600050.gif"
  5. $title = "中国联通(600050)30日资金进出"
  6. $date = array ("2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00"); 
  7. $hai = array(7203,6037,1931,9605,7405,8855,228,7771,8671,8791,1290,426,3265,4298,4809,3350,8204,8682,5523,7569,5853,593,3124,9062,3329,3236,2252,8756,2796,5164,2599,2630,1470,9779,8805,1512,1517,5635,760,1380,152,6035,2905,3163,9443,9432,5031,2838,6802,9330,1878,1333,4297,4180,3037,4527,9043,7287,3248,3448,3405,7204,2203,3974,4399,7333,4541,7033,4292,6128,9955,8603,297,6992,3282,9612,4483,8379,4016,6038,4163,3789,6896,8710,1502,1579,1712,3705,3619,5150,3007,1853,2776,3056,569,9031,6092,8600,8941,6366,5829,433,8011,9637,9106,1761,2422,9873,8186,1136,1763,3050,285,1962,775,9900,7371,2691,9051,6596,6858,6726,1527,3970,910,2621,7598,7899,6546,3678,2202,9411,6129,8352,4830,4484,6776,243,323,3946,751,7508,8173,3776,5071,3847,3318,4901,2102,7516,5251,3299,8859,2114,8711,9800,7707,5898,3489,580,5763,2470,4126,6269,5191,182,412,3043,3208,2438,6889,1732,1979,7692,3445,8214,8620,9446,4624,3615,5496,6152,213,3715,9623,1215,4757,9443,3366,2988,8043,6874,3742,4974,4812,6839,3016,5625,4656,5315,8303,8346,2315,3230,1969,1688,7381,6463,1030,8856,4691,6042,7652,8502,3839,7844,9149,4029,9465,2897,7688,3791,1458,6981,484,1290,4261,1222,9503,4881,7663,1399,2260,8066,6405,8442,722,9297,177,8426,2103,2078,3521,2280,8570,4663,6227,5784,7438,654,3036,9965,872,8306,3537,899,5888,1319,2472,9218,4853,7849,9433,1196,4880,1597,9258,7465,8138,817,1637,4201,1939,8914,1114,2232,8251,4538,7378,7438,4489,993,5269,944,2718,6633,4378,8431,155,5061,9347,1125,8865,4629,9965,4706,6263,8742,971,301); 
  8. draw(600,300,$data,$colors,$path,$title,$date); 
  9. function draw($w,$h,$data,$colors,$path,$title,$date
  10.  //创建新空白图形 
  11.  //箭头50像素,内容400*300 
  12.  $width = $w
  13.  $height = $h
  14.  //取得左下角的坐标点,左边50像素和最下边50像素用于写标尺 
  15.  $l_b_x = 50; 
  16.  $l_b_y = $height/2; 
  17.   
  18.  $chartfont = 2; //图表字体 
  19.  $font = 'c:/windows/fonts/simsun.ttc';//支持汉字的字体 
  20.  $chartfontheight = imagefontheight($chartfont);//图表字体的大小 
  21.   
  22.  //取得最大的数据 
  23.  $max = abs(max($data)); 
  24.  $max = $max>abs(min($data))?$max:abs(min($data)); 
  25.  $image = imagecreate($width,$height); 
  26.   
  27.  //填充背景为白色 
  28.  $color_white = imagecolorallocate($image, 0xff, 0xff, 0xff);//白色 
  29.  $color_diwen = imagecolorallocate($image,0xd8,0xd8,0xd8);//暗灰色 
  30.  imagefill($image,0,0,$color_white); 
  31.  //写入logo 
  32.  imagettftext($image,20,0,$l_b_x+20,45,$color_diwen,$font,'华南财经网'); 
  33.  //画坐标 
  34.  //坐标颜色为黑色,先画坐标,再画箭头 
  35.  $black_color = imagecolorallocate($image,0x00,0x00,0x00); 
  36.  imageline($image,$l_b_x,$l_b_y,$l_b_x,10,$black_color); 
  37.  imageline($image,$l_b_x,$l_b_y,$width-10,$l_b_y,$black_color); 
  38.  //箭头 
  39.  imageline($image,$l_b_x,10,$l_b_x-3,14,$black_color); 
  40.  imageline($image,$l_b_x,10,$l_b_x+3,14,$black_color); 
  41.  imageline($image,$width-10,$l_b_y,$width-13,$l_b_y-3,$black_color); 
  42.  imageline($image,$width-10,$l_b_y,$width-13,$l_b_y+3,$black_color); 
  43.  //画底纹,灰色;画20条底纹;虚线 
  44.  $pit = floor(($l_b_y-50)/10);//每一段的高度 
  45.  $pit_x = floor(($width-$l_b_x-30)/count($data));//每一段的宽度 
  46.  //计算单位 
  47.  $x_max = $max
  48.  $flag_danwei = 0; 
  49.  while($x_max> 1000 ) 
  50.  { 
  51.   $x_max /= 100; 
  52.   $flag_danwei++; 
  53.  } 
  54.  switch($flag_danwei
  55.  { 
  56.  // case 0:$danwei = '(元)';break; 
  57.   case 0:$danwei = '(万)';break
  58.   case 1:$danwei = '(百万)';break
  59.   case 2:$danwei = '(亿)';break
  60.   case 3:$danwei = '(百亿)';break
  61.  } 
  62.  for($i=1;$i<11;$i++) 
  63.  { 
  64.   imageline($image,$l_b_x+1,$l_b_y-$i*$pit,$width-15,$l_b_y-$i*$pit,$color_diwen); 
  65.   //从坐标的值 
  66.   $v_v = number_format(($max/(10*pow(100,$flag_danwei))*$i),2); 
  67.   $v_v = substr($v_v,0,5); 
  68.   imagestring($image
  69.      $chartfont
  70.      $l_b_x-40, 
  71.      $l_b_y-$i*$pit-10,  
  72.      $v_v
  73.      $black_color); 
  74.  } 
  75.  //原点坐标 
  76.  imagestring($image
  77.     $chartfont
  78.     $l_b_x-20, 
  79.     $l_b_y-10,  
  80.     0, 
  81.     $black_color); 
  82.  //写入汉字,单位 和标题 
  83.  imagettftext($image, 10,0,$l_b_x-45,20,$black_color,$font,$danwei); 
  84.  //imagettftext($image, 11,0,$width/2-70,$l_b_y+20,$black_color, $font,$title); 
  85.  
  86.  //画柱体,长方形,并着色 
  87.  $color_big = imagecolorallocate($image,$colors[0][0],$colors[0][1],$colors[0][2]); 
  88.  $color_small = imagecolorallocate($image,$colors[1][0],$colors[1][1],$colors[1][2]); 
  89.  for($j=0;$j<count($data);$j++) 
  90.  { 
  91.   $d_h = floor(abs($data[$j]/$max*10*$pit));//柱体高度 
  92.   $current_date = substr($date[$j],5,5); 
  93.  // $current_date .= substr($date[$j],8,2); 
  94.   imagerectangle($image
  95.      $l_b_x+$j*$pit_x+1, 
  96.      $l_b_y
  97.      $l_b_x+($j+1)*$pit_x-2, 
  98.      $l_b_y-$d_h
  99.      $black_color); 
  100.   //为矩形着色 
  101.   $current_color = $data[$j]>0?$color_big:$color_small
  102.   imagefilltoborder($image
  103.     $l_b_x+$j*$pit_x+1 + floor($pit_x/2), 
  104.     $l_b_y-floor($d_h/2), 
  105.     $black_color
  106.     $current_color); 
  107.   //写入日期 
  108.   /*imagestring($image, 
  109.     $chartfont, 
  110.     $l_b_x+$j*$pit_x, 
  111.     $l_b_y+2, 
  112.     $current_date, 
  113.     $black_color);*/ 
  114.   imagettftext($image,8,90,$l_b_x+$j*$pit_x+10,$l_b_y-$d_h,$black_color,$font,$current_date); 
  115.  }  
  116.  if($path !=""
  117.   imagegif($image,$path); 
  118.  else imagegif($image); 
  119.  imagedestroy($image); 
  120.  }//画图函数结束 
  121. //输出生成的图片 
  122. /* 
  123. //开源代码phpfensi.com 
  124. header("content-type: image/gif"); 
  125. $my_colors[] = array(0xff,0x00,0x00); 
  126. $my_colors[] = array(0x00,0xff,0x00); 
  127. draw(600,400,array(1066565650,-40345340,50343433440,1834340,50343230,-8023454230,600,7232323300,-836),$my_colors,0,'教科书大阿斯顿即可');*/ 
  128. //draw(600,400,array(1066,-4040,5040,1840,5030,-8230,600,7232,-836),$my_colors,0,'教科书大阿斯顿即可'); 
  129. ?> 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门