Home  >  Article  >  Backend Development  >  PHP stock K-line chart generation code_PHP tutorial

PHP stock K-line chart generation code_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:45:474216browse

This program implements php to draw histograms //The design idea is: first use imagecreate() to generate a blank graphic; the program is implemented as follows: //Two different colors are needed, one for positive numbers and one for negative numbers, and a data array. $path is the address where the image is saved

//This program implements php to draw histograms. Friends who develop stock websites often encounter generating k-line pictures. Now let's take a look at a method that uses php to generate k-line pictures based on array data.
//The design idea is: first use imagecreate() to generate a blank graphic; the program is implemented as follows:
//Two different colors are needed, one for positive numbers and one for negative numbers, a data array, $path is the address where the picture is saved

$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
$colors = array (array (255,0,0 ),array (0,255,0 ) );
$path = "gg15_600050.gif";
$title = "China Unicom (600050) 30-day capital inflow and outflow";
$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");
$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,28 38 ,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,8 600 ,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,769 2,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,5 315 ,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);
draw(600,300,$data,$colors,$path,$title,$date);
function draw($w,$h,$data,$colors,$path,$title,$date)
{
//Create a new blank graphic
//Arrow 50 pixels, content 400*300
$width = $w;
$height = $h;
//Get the coordinate point of the lower left corner, the left 50 pixels and the bottom 50 pixels are used to write the ruler
$l_b_x = 50;
$l_b_y = $height/2;

$chartfont = 2; //Chart font
$font = 'c:/windows/fonts/simsun.ttc';//Fonts that support Chinese characters
$chartfontheight = imagefontheight($chartfont);//Chart font size

//Get the largest data
$max = abs(max($data));
$max = $max>abs(min($data))?$max:abs(min($data));
$image = imagecreate($width,$height);

//Fill the background with white
$color_white = imagecolorallocate($image, 0xff, 0xff, 0xff);//White
$color_diwen = imagecolorallocate($image,0xd8,0xd8,0xd8);//Dark gray
imagefill($image,0,0,$color_white);
//Write logo
imagettftext($image,20,0,$l_b_x+20,45,$color_diwen,$font,'South China Financial Network');
//Draw coordinates
//The coordinate color is black, draw the coordinates first, then draw the arrow
$black_color = imagecolorallocate($image,0x00,0x00,0x00);
imageline($image,$l_b_x,$l_b_y,$l_b_x,10,$black_color);
imageline($image,$l_b_x,$l_b_y,$width-10,$l_b_y,$black_color);
//Arrow
imageline($image,$l_b_x,10,$l_b_x-3,14,$black_color);
imageline($image,$l_b_x,10,$l_b_x+3,14,$black_color);
imageline($image,$width-10,$l_b_y,$width-13,$l_b_y-3,$black_color);
imageline($image,$width-10,$l_b_y,$width-13,$l_b_y+3,$black_color);
//Draw shading, gray; draw 20 shading lines; dotted lines
$pit = floor(($l_b_y-50)/10);//The height of each section
$pit_x = floor(($width-$l_b_x-30)/count($data));//Width of each segment
//Calculation unit
$x_max = $max;
$flag_danwei = 0;
while($x_max> 1000 )
{
$x_max /= 100;
$flag_danwei++;
}
switch($flag_danwei)
{
// case 0:$danwei = '(元)';break;
case 0:$danwei = '(ten thousand)';break;
case 1:$danwei = '(million)';break;
case 2:$danwei = '(billion)';break;
case 3:$danwei = '(tens of billions)';break;
}
for($i=1;$i<11;$i++)
{
imageline($image,$l_b_x+1,$l_b_y-$i*$pit,$width-15,$l_b_y-$i*$pit,$color_diwen);
//Value from coordinates
$v_v = number_format(($max/(10*pow(100,$flag_danwei))*$i),2);
$v_v = substr($v_v,0,5);
imagestring($image,
$chartfont,
        $l_b_x-40,
$l_b_y-$i*$pit-10,
$v_v,
$black_color);
}
//Origin coordinates
imagestring($image,
$chartfont,
$l_b_x-20,
$l_b_y-10,
0,
$black_color);
//Write Chinese characters, units and titles
imagettftext($image, 10,0,$l_b_x-45,20,$black_color,$font,$danwei);
//imagettftext($image, 11,0,$width/2-70,$l_b_y+20,$black_color, $font,$title);

//Draw a cylinder, rectangle, and color it
$color_big = imagecolorallocate($image,$colors[0][0],$colors[0][1],$colors[0][2]);
$color_small = imagecolorallocate($image,$colors[1][0],$colors[1][1],$colors[1][2]);
for($j=0;$j {
$d_h = floor(abs($data[$j]/$max*10*$pit));//Cylinder height
$current_date = substr($date[$j],5,5);
// $current_date .= substr($date[$j],8,2);
imagerectangle($image,
$l_b_x+$j*$pit_x+1,
$l_b_y,
       $l_b_x+($j+1)*$pit_x-2,
$l_b_y-$d_h,
$black_color);
//Color the rectangle
$current_color = $data[$j]>0?$color_big:$color_small;
imagefilltoborder($image,
$l_b_x+$j*$pit_x+1 + floor($pit_x/2),
$l_b_y-floor($d_h/2),
$black_color,
$current_color);
//Write date
/*imagestring($image,
$chartfont,
$l_b_x+$j*$pit_x,
$l_b_y+2,
$current_date,
$black_color);*/
imagettftext($image,8,90,$l_b_x+$j*$pit_x+10,$l_b_y-$d_h,$black_color,$font,$current_date);
}
if($path !="")
imagegif($image,$path);
else imagegif($image);
imagedestroy($image);
}//End of drawing function
//Output the generated image
/*

header("content-type: image/gif");
$my_colors[] = array(0xff,0x00,0x00);
$my_colors[] = array(0x00,0xff,0x00);
draw(600,400,array(1066565650,-40345340,50343433440,1834340,50343230,-8023454230,600,7232323300,-836),$my_colors,0,'Textbook Aston is enough');*/
//draw(600,400,array(1066,-4040,5040,1840,5030,-8230,600,7232,-836),$my_colors,0,'Textbook Aston is enough');
?>

Original tutorial on this site, please indicate the source for reprinting is http://www.bKjia.c0m/phper/php.html, otherwise you will be held accountable

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/633000.htmlTechArticleThis program implements php drawing histogram // Its design idea is: first use imagecreate() to generate a Blank graphics; the program is implemented as follows: //Two different colors are required, one positive...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn