首页 > 编程 > PHP > 正文

PHP实现股票趋势图和柱形图

2020-03-22 19:25:20
字体:
来源:转载
供稿:网友
* @param type line/other 趋势图/柱形图 默认趋势图 * @param txt 1/other 显示/不显示 提示文字 默认不显示 * @param lang hk/cn 繁体中文/简体中文 默认繁体 * @param id int 股票编号 必填 * @param min int 最小时间 默认无 * @param max int 最大时间 默认无$type = isset($_GET['type']) $_GET['type'] : 'line';$showtxt = (isset($_GET['txt']) && ($_GET['txt'] == 1)) true : false;//设置语言if (isset($_GET['lang'])) { $lang = $_GET['lang'] == 'cn' 'cn' : 'hk';} else { $lang = 'hk';$desc_tip = array( 'hk' = array( 'line' = array("昨日收盤價", "股價"), 'bar' = "總成交量:" 'cn' = array( 'line' = array("昨日收盘价", "股价"), 'bar' = "总成交量:"$id = isset($_GET['id']) (int)$_GET['id'] : 1; //股票编码$wheres = "where stock_no = ".$id;//最小时间if (isset($_GET['min'])) { $wheres .= " and `created` = ".(int)$_GET['min'];//最大时间if (isset($_GET['max'])) { $wheres .= " and `created` = ".(int)$_GET['max'];$wheres .= " order by created";$sth = $dbh- prepare("SELECT * FROM $tb_name " . $wheres);$sth- execute();$results = $sth- fetchAll(PDO::FETCH_ASSOC);if ($lang == 'hk') { $ttf_path = "fonts/zh_hk.ttc";} else { $ttf_path = "fonts/zh_cn.ttf";//初始化$line2 = array(); //股价$bar = array(); //成交量$times = array(); //时间foreach ($results as $keys = $html' target='_blank'>values) : $line2[] = $values['current_price']; $bar[] = $values['volume']; //只显示整点的标签 if ($keys % 4 == 0) { $times[] = $values['created']; } else { $times[] = VOID;endforeach;$l2counts = count($line2);$myData = new pData();//如果是线型图if ($type == "line") {//取股票名称 $stock_sth = $dbh- prepare("SELECT `name` FROM `tbl_stock` WHERE `code` = {$id}"); $stock_sth- execute(); $stock_info = $stock_sth- fetch(PDO::FETCH_ASSOC); $func_name = "zhconversion_".$lang; //$stock_name = $func_name($stock_info['name']); $stock_name = "某某公司";//取出最值 $sql = "SELECT MIN(`current_price`) xiao, MAX(`current_price`) da FROM $tb_name $wheres"; foreach ($dbh- query($sql, PDO::FETCH_ASSOC) as $row) { $bottom = (int)$row['xiao'] - 2; $top = (int)$row['da'] + 2; //昨日收盘价 $l1s = array(); for ($i = 1; $i = $l2counts; $i++) { $l1s[] = 130; $myData- addPoints($l1s, "Line1"); $myData- addPoints($line2, "Line2"); $myData- setPalette("Line1",array("R"= 51,"G"= 114,"B"= 178)); $myData- setPalette("Line2",array("R"= 0,"G"= 255,"B"= $myData- setAxisPosition(0, AXIS_POSITION_RIGHT); $myData- addPoints($times, "Times"); $myData- setSerieDescription("Times","Time"); $myData- setAbscissa("Times"); $myData- setXAxisDisplay(AXIS_FORMAT_TIME,"H:i");
//设置默认字体 $myPicture- setFontProperties(array("FontName" = "fonts/en_us.ttf", "FontSize" = 6));//背景颜色 //$Settings = array("StartR"= 219, "StartG"= 231, "StartB"= 139, "EndR"= 1, "EndG"= 138, "EndB"= 68, "Alpha"= //$myPicture- drawGradientArea(0,0,480,300,DIRECTION_VERTICAL,$Settings);//画格子和标签 $myPicture- setGraphArea(10, 40, 440, 260); $AxisBoundaries = array(0 = array("Min" = $bottom, "Max" = $top)); $Settings = array( "Mode" = SCALE_MODE_MANUAL, "GridR" = 200, "GridG" = 200, "GridB" = 200, "XMargin" = 0, "YMargin" = 0, //"DrawXLines" = false, "GridTicks" = 3, //格子密度 "ManualScale" = $AxisBoundaries, $myPicture- drawScale($Settings); $line_arr = array( "ForceColor" = TRUE, "ForceR" = 0, "ForceG" = 0, "ForceB" = 255); $myPicture- drawLineChart($line_arr); */ $myPicture- drawLineChart(); //设置Line1为无效,再画底色 $myData- setSerieDrawable("Line1",FALSE);//画区域底线 $area_arr = array( "ForceTransparency"= 15, //透明度 $myPicture- drawAreaChart($area_arr); //是否显示文字 if ($showtxt) { //标题 $myPicture- drawText(200,30,$stock_name,array("FontName"= $ttf_path, "FontSize"= 11,"Align"= TEXT_ALIGN_BOTTOMMIDDLE)); //设置Line1为有效 $myData- setSerieDrawable("Line1",TRUE); $myData- setSerieDescription("Line1",$desc_tip[$lang]['line'][0]); $myData- setSerieDescription("Line2",$desc_tip[$lang]['line'][1]); $myPicture- setFontProperties(array("FontName" = $ttf_path,"FontSize"= $tips = array( "Style"= LEGEND_NOBORDER, "Mode"= LEGEND_HORIZONTAL, "FontR"= 0,"FontG"= 0,"FontB"= 0, $myPicture- drawLegend(20,26,$tips);//柱形图} else { $myData- addPoints($bar, "Bar"); $myData- setPalette("Bar",array("R"= 51,"G"= 114,"B"= 178)); //设置柱子的颜色 $myData- addPoints($times, "Times"); $myData- setSerieDescription("Times","Time"); $myData- setAbscissa("Times"); $myData- setXAxisDisplay(AXIS_FORMAT_TIME,"H:i"); $myPicture = new pImage(480, 200, $myData); //设置默认字体 $myPicture- setFontProperties(array("FontName" = "fonts/en_us.ttf", "FontSize"= $myPicture- Antialias = FALSE; $myPicture- setGraphArea(50,20,450,180); //网格及坐标 $scaleSettings = array( "Mode" = SCALE_MODE_START0, "GridR"= 200, "GridG"= 200, "GridB"= 200); $myPicture- drawScale($scaleSettings); $Palette = array(); for ($i = 0; $i = $l2counts; $i++) { $Palette[$i] = array("R"= 74,"G"= 114,"B"= 178,"Alpha"= 100); //$Palette = array("0"= array("R"= 74,"G"= 114,"B"= 178,"Alpha"= 100)); /* 覆盖画板色 $barSetting = array( "OverrideColors"= $Palette, $myPicture- drawBarChart($barSetting); $myPicture- drawBarChart(); //是否显示文字 if ($showtxt) { $tips = array( "Style"= LEGEND_NOBORDER, "Mode"= LEGEND_HORIZONTAL, "FontR"= 0,"FontG"= 0,"FontB"= 0, $myPicture- setFontProperties(array("FontName" = $ttf_path,"FontSize"= $alls = 0; //总成交量初始化 foreach ($bar as $value) { $alls += $value; $myData- setSerieDescription("Bar", $desc_tip[$lang]['bar'].$alls); $myPicture- drawLegend(300,9,$tips);$myPicture- stroke();//$myPicture- autoOutput("image.png");//保存日志//file_put_contents("log.txt", json_encode($myData) . "/n"); PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表