PHP实现股票趋势图和柱形图_PHP
基于强大的pchart类库。
<?php /* * 股票趋势图和柱形图 * @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 趋势图/柱形图 默认趋势图 * @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"); ?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。
