• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-25) 15次浏览 已收录 0个评论

基于强大的pchart类库。

<?php/* * 股票趋势图和柱形图 * @author: Skiychan  * @created: 02/05/2015 */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` 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<em>/本2文来源[email protected]搞@^&代*@码2网</em><strong>搞gaodaima代码</strong> == 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 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 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");?>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现股票趋势图和柱形图_PHP
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址