Home > Backend Development > PHP Tutorial > Example code for drawing 24-hour histogram using php GD library

Example code for drawing 24-hour histogram using php GD library

WBOY
Release: 2016-07-25 08:55:34
Original
885 people have browsed it
  1. /*

  2. 24-hour bar chart
  3. Author: taokey
  4. QQ:29611705
  5. * Editor: bbs.it-home.org
  6. */

  7. function h24($str){

  8. $hour = explode(",",$str);
  9. $hmax = max($hour);
  10. $ppix = 150/$hmax;

  11. //Calculate the height of the histogram

  12. $h0 = 190-$hour[0]*$ppix;
  13. $h1 = 190-$hour[1]*$ppix;
  14. $h2 = 190-$hour[2 ]*$ppix;
  15. $h3 = 190-$hour[3]*$ppix;
  16. $h4 = 190-$hour[4]*$ppix;
  17. $h5 = 190-$hour[5]*$ppix;
  18. $h6 = 190-$hour[6]*$ppix;
  19. $h7 = 190-$hour[7]*$ppix;
  20. $h8 = 190-$hour[8]*$ppix;
  21. $h9 = 190 -$hour[9]*$ppix;
  22. $h10 = 190-$hour[10]*$ppix;
  23. $h11 = 190-$hour[11]*$ppix;
  24. $h12 = 190-$hour[12 ]*$ppix;
  25. $h13 = 190-$hour[13]*$ppix;
  26. $h14 = 190-$hour[14]*$ppix;
  27. $h15 = 190-$hour[15]*$ppix;
  28. $h16 = 190-$hour[16]*$ppix;
  29. $h17 = 190-$hour[17]*$ppix;
  30. $h18 = 190-$hour[18]*$ppix;
  31. $h19 = 190 -$hour[19]*$ppix;
  32. $h20 = 190-$hour[20]*$ppix;
  33. $h21 = 190-$hour[21]*$ppix;
  34. $h22 = 190-$hour[22 ]*$ppix;
  35. $h23 = 190-$hour[23]*$ppix;

  36. //Create an img

  37. $img = imagecreate(755,210);
  38. //Background
  39. $ bgc = imagecolorallocate ($img, 245, 250, 254);
  40. //Black
  41. $bc = imagecolorallocate($img,0,0,0);
  42. //Draw the vertical axis
  43. imageline($img,15,30, 15,189, $bc);
  44. //Draw the horizontal axis
  45. imageline($img,15,190,750,190, $bc);

  46. //Draw the vertical axis points

  47. for($i=39,$j =10;$i<189;$i=$i+15,$j--){
  48. imageline($img,13,$i,15,$i, $bc);
  49. imagestring($img,1, 1,$i-4,$j."x", $bc);
  50. }

  51. //Draw horizontal axis points

  52. $t = true;
  53. for($i=31, $j=29;$i<750;$i=$j+1,$j=$j+15){
  54. if($t){
  55. $x=$i;
  56. $t=false;
  57. }else {
  58. $x=$i+1;
  59. $t=true;
  60. }
  61. imageline($img,$x,190,$x,192, $bc);
  62. }
  63. //竖轴标记
  64. $x = ceil($hmax/10);
  65. imagestring($img,2,10,15,"X=".$x,$bc);
  66. //竖轴标记

  67. //0点

  68. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  69. imagefilledrectangle($img,31,$h0,45,189,$color);
  70. imagestring($img,1,31,$h0-10,$hour[0],$color);
  71. imagechar($img,1,36,195,0,$bc);

  72. //1点

  73. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  74. imagefilledrectangle($img,61,$h1,75,189,$color);
  75. imagestring($img,1,61,$h1-10,$hour[1],$color);
  76. imagechar($img,1,66,195,1,$bc);

  77. //2点

  78. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  79. imagefilledrectangle($img,91,$h2,105,189,$color);
  80. imagestring($img,1,91,$h2-10,$hour[2],$color);
  81. imagechar($img,1,96,195,2,$bc);

  82. //3点

  83. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  84. imagefilledrectangle($img,121,$h3,135,189,$color);
  85. imagestring($img,1,121,$h3-10,$hour[3],$color);
  86. imagechar($img,1,126,195,3,$bc);

  87. //4点

  88. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  89. imagefilledrectangle($img,151,$h4,165,189,$color);
  90. imagestring($img,1,151,$h4-10,$hour[4],$color);
  91. imagechar($img,1,156,195,4,$bc);

  92. //5点

  93. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  94. imagefilledrectangle($img,181,$h5,195,189,$color);
  95. imagestring($img,1,181,$h5-10,$hour[5],$color);
  96. imagechar($img,1,186,195,5,$bc);

  97. //6点

  98. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  99. imagefilledrectangle($img,211,$h6,225,189,$color);
  100. imagestring($img,1,211,$h6-10,$hour[6],$color);
  101. imagechar($img,1,216,195,6,$bc);

  102. //7点

  103. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  104. imagefilledrectangle($img,241,$h7,255,189,$color);
  105. imagestring($img,1,241,$h7-10,$hour[7],$color);
  106. imagechar($img,1,246,195,7,$bc);

  107. //8点

  108. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  109. imagefilledrectangle($img,271,$h8,285,189,$color);
  110. imagestring($img,1,271,$h8-10,$hour[8],$color);
  111. imagechar($img,1,276,195,8,$bc);

  112. //9点

  113. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  114. imagefilledrectangle($img,301,$h9,315,189,$color);
  115. imagestring($img,1,301,$h9-10,$hour[9],$color);
  116. imagechar($img,1,306,195,9,$bc);

  117. //10点

  118. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  119. imagefilledrectangle($img,331,$h10,345,189,$color);
  120. imagestring($img,1,331,$h10-10,$hour[10],$color);
  121. imagestring($img,1,334,195,10,$bc);

  122. //11点

  123. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  124. imagefilledrectangle($img,361,$h11,375,189,$color);
  125. imagestring($img,1,361,$h11-10,$hour[11],$color);
  126. imagestring($img,1,364,195,11,$bc);

  127. //12点

  128. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  129. imagefilledrectangle($img,391,$h12,405,189,$color);
  130. imagestring($img,1,391,$h12-10,$hour[12],$color);
  131. imagestring($img,1,394,195,12,$bc);

  132. //13点

  133. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  134. imagefilledrectangle($img,421,$h13,435,189,$color);
  135. imagestring($img,1,421,$h13-10,$hour[13],$color);
  136. imagestring($img,1,424,195,13,$bc);

  137. //14点

  138. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  139. imagefilledrectangle($img,451,$h14,465,189,$color);
  140. imagestring($img,1,451,$h14-10,$hour[14],$color);
  141. imagestring($img,1,454,195,14,$bc);

  142. //15点

  143. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  144. imagefilledrectangle($img,481,$h15,495,189,$color);
  145. imagestring($img,1,481,$h15-10,$hour[15],$color);
  146. imagestring($img,1,481,195,15,$bc);

  147. //16点

  148. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  149. imagefilledrectangle($img,511,$h16,525,189,$color);
  150. imagestring($img,1,511,$h16-10,$hour[16],$color);
  151. imagestring($img,1,511,195,16,$bc);

  152. //17点

  153. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  154. imagefilledrectangle($img,541,$h17,555,189,$color);
  155. imagestring($img,1,541,$h17-10,$hour[17],$color);
  156. imagestring($img,1,544,195,17,$bc);

  157. //18点

  158. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  159. imagefilledrectangle($img,571,$h18,585,189,$color);
  160. imagestring($img,1,571,$h18-10,$hour[18],$color);
  161. imagestring($img,1,571,195,18,$bc);

  162. //19点

  163. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  164. imagefilledrectangle($img,601,$h19,615,189,$color);
  165. imagestring($img,1,601,$h19-10,$hour[19],$color);
  166. imagestring($img,1,604,195,19,$bc);

  167. //20点

  168. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  169. imagefilledrectangle($img,631,$h20,645,189,$color);
  170. imagestring($img,1,631,$h20-10,$hour[20],$color);
  171. imagestring($img,1,634,195,20,$bc);

  172. //21点

  173. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  174. imagefilledrectangle($img,661,$h21,675,189,$color);
  175. imagestring($img,1,661,$h21-10,$hour[21],$color);
  176. imagestring($img,1,664,195,21,$bc);

  177. //22点

  178. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  179. imagefilledrectangle($img,691,$h22,705,189,$color);
  180. imagestring($img,1,691,$h22-10,$hour[22],$color);
  181. imagestring($img,1,694,195,22,$bc);

  182. //23点

  183. $color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  184. imagefilledrectangle($img,721,$h23,735,189,$color);
  185. imagestring($img,1,721,$h23-10,$hour[23],$color);
  186. imagestring($img,1,724,195,23,$bc);

  187. //加个边框 加了之后不好看

  188. //imagerectangle($img, 0, 0, 754, 209, $bc);

  189. imagepng($img);

  190. imagedestroy($img);
  191. }
  192. $str = isset($_GET['str'])?$_GET['str']:"";
  193. if($str){
  194. h24($str);
  195. }
  196. ?>

复制代码


source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template