亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語(yǔ)言

PHP實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖

時(shí)間:2024-08-18 14:01:11 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖

  文章主要介紹了PHP實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖,本文效果基于pchart類庫(kù)實(shí)現(xiàn),給出實(shí)現(xiàn)代碼和效果圖,需要的朋友可以參考下。

  基于強(qiáng)大的pchart類庫(kù)! <?php

  /*

  * 股票趨勢(shì)圖和柱形圖

  * @author: Skiychan <developer@zzzzy.com>

  * @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 趨勢(shì)圖/柱形圖 默認(rèn)趨勢(shì)圖

  * @param txt 1/other 顯示/不顯示 提示文字 默認(rèn)不顯示

  * @param lang hk/cn 繁體中文/簡(jiǎn)體中文 默認(rèn)繁體

  * @param id int 股票編號(hào) 必填

  * @param min int 最小時(shí)間 默認(rèn)無(wú)

  * @param max int 最大時(shí)間 默認(rèn)無(wú)

  */

  $type = isset($_GET['type']) ? $_GET['type'] : 'line';

  $showtxt = (isset($_GET['txt']) && ($_GET['txt'] == 1)) ? true : false;

  //設(shè)置語(yǔ)言

  if (isset($_GET['lang'])) {

  $lang = $_GET['lang'] == 'cn' ? 'cn' : 'hk';

  } else {

  $lang = 'hk';

  }

  $desc_tip = array(

  'hk' => array(

  'line' => array("昨日收盤價(jià)", "股價(jià)"),

  'bar' => "總成交量:"

  ),

  'cn' => array(

  'line' => array("昨日收盤價(jià)", "股價(jià)"),

  'bar' => "總成交量:"

  )

  );

  $id = isset($_GET['id']) ? (int)$_GET['id'] : 1; //股票編碼

  //條件

  $wheres = "where stock_no = ".$id;

  //最小時(shí)間

  if (isset($_GET['min'])) {

  $wheres .= " and `created` >= ".(int)$_GET['min'];

  }

  //最大時(shí)間

  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(); //股價(jià)

  $bar = array(); //成交量

  $times = array(); //時(shí)間

  foreach ($results as $keys => $values) :

  $line2[] = $values['current_price'];

  $bar[] = $values['volume'];

  //只顯示整點(diǎn)的標(biāo)簽

  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;

  }

  //昨日收盤價(jià)

  $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);

  //設(shè)置默認(rèn)字體

  $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);

  //畫格子和標(biāo)簽

  $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();

  //設(shè)置Line1為無(wú)效,再畫底色

  $myData->setSerieDrawable("Line1",FALSE);

  //畫區(qū)域底線

  $area_arr = array(

  "ForceTransparency"=>15, //透明度

  );

  $myPicture->drawAreaChart($area_arr);

  //是否顯示文字

  if ($showtxt) {

  //標(biāo)題

  $myPicture->drawText(200,30,$stock_name,array("FontName"=>$ttf_path, "FontSize"=>11,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));

  //設(shè)置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)); //設(shè)置柱子的顏色

  $myData->addPoints($times, "Times");

  $myData->setSerieDescription("Times","Time");

  $myData->setAbscissa("Times");

  $myData->setXAxisDisplay(AXIS_FORMAT_TIME,"H:i");

  $myPicture = new pImage(480, 200, $myData);

  //設(shè)置默認(rèn)字體

  $myPicture->setFontProperties(array("FontName" => "fonts/en_us.ttf", "FontSize"=>6));

  $myPicture->Antialias = FALSE;

  $myPicture->setGraphArea(50,20,450,180);

  //網(wǎng)格及坐標(biāo)

  $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實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖】相關(guān)文章:

php注冊(cè)和登錄界面的實(shí)現(xiàn)案例03-17

Excel2010如何制作柱形圖12-05

PHP實(shí)現(xiàn)多線程的方法03-29

PHP中實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)12-06

php頁(yè)面緩存實(shí)現(xiàn)方法11-27

PHP中多態(tài)如何實(shí)現(xiàn)03-07

PHP頁(yè)面跳轉(zhuǎn)實(shí)現(xiàn)技巧12-06

PHP 數(shù)組和字符串互相轉(zhuǎn)換實(shí)現(xiàn)方法12-02

PHP中使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求的方法12-03