温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用PHP怎么输出一个股票趋势图

发布时间:2021-02-03 19:36:49 来源:亿速云 阅读:196 作者:Leah 栏目:开发技术

使用PHP怎么输出一个股票趋势图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<?php include "libs/pData.class.php"; include "libs/pDraw.class.php"; include "libs/pImage.class.php"; include "database.php"; include "libs/convert.php"; date_default_timezone_set('Asia/Shanghai'); /*  * @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 => $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"=>0));   $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 = new pImage(480, 300, $myData);   //设置默认字体   $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"=>50);   //$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"=>8));     $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"=>6));   $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"=>9));     $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怎么输出一个股票趋势图问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI