顯示具有 Highcharts 標籤的文章。 顯示所有文章
顯示具有 Highcharts 標籤的文章。 顯示所有文章

2015年5月8日 星期五

Highstock 測試 (一)

稍微搞懂 Highcharts 後, 我迫不及待要來測試它用來繪製股票資料的 Highstock. 其環境配置與 Highcharts 一樣, 下載 zip 檔解開後將 js 資料夾下的 highstock.js 複製到專案目錄下匯入網頁中即可. 參考 :

# Highchart 執行環境配置


只要在網頁中匯入 jquery.js 與 highstock.js 即可 :

  <script src="../jquery/jquery.js"></script>
  <script src="../jquery/highstock.js"></script>

或者利用 CDN 供檔, 就毋需下載 SDK 了 :

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="http://code.highcharts.com/stock/highstock.js"></script>

這樣接下來就可以進行測試了. 我將解壓縮目錄 examples/candlestick 下的 index.html 改編為如下範例 1 :

範例 1 : http://tony1966.xyz/test/jquerytest/highstock-1.htm [看原始碼]

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Highstock 測試</title>
  <script src="../jquery/jquery.js"></script>
  <script src="../jquery/highstock.js"></script>
</head>
<body>
  <div id="container" style="min-width: 600px; height: 400px; margin: 0 auto">
  </div>
  <script>
    $(function () {
      var url="http://www.highcharts.com/samples/data/jsonp.php?a=e&filename=" +
              "aapl-ohlc.json&callback=?";
      $.getJSON(url, function(data) {
        $('#container').highcharts('StockChart', {
          rangeSelector: {selected : 1},
          title: {text: 'AAPL Stock Price'},
          series: [{
            type: 'candlestick',
            name: 'AAPL Stock Price',
            data: data,
            dataGrouping: {units: [['week', [1]], ['month',[1, 2, 3, 4, 6]]]}
            }]
          });
        });
      });
  </script>
</body>
</html>

可見它是用 jQuery 的 getJSON() 向伺服器取得 JSON 格式資料後, 傳給回呼函式, 再餵給 series 之 data 屬性. 此 JSON 檔格式如下, 是一個二維陣列 :

# http://www.highcharts.com/samples/data/jsonp.php?a=e&filename=aapl-ohlc.json&callback=?

?(/* AAPL historical OHLC data from the Google Finance API */
[
/* May 2006 */
[1147651200000,67.37,68.38,67.12,67.79],
[1147737600000,68.10,68.25,64.75,64.98],
[1147824000000,64.70,65.70,64.07,65.26],
[1147910400000,65.68,66.26,63.12,63.18],
[1147996800000,63.26,64.88,62.82,64.51],
[1148256000000,63.87,63.99,62.77,63.38],
[1148342400000,64.86,65.19,63.00,63.15],
[1148428800000,62.99,63.65,61.56,63.34],
[1148515200000,64.26,64.45,63.29,64.33],
[1148601600000,64.31,64.56,63.14,63.55],
[1148947200000,63.29,63.30,61.22,61.22],
[1149033600000,61.76,61.79,58.69,59.77],
/* Jun 2006 */
.....
.....
/* May 2013 */
[1367366400000,444.46,444.93,434.39,439.29],
[1367452800000,441.78,448.59,440.63,445.52],
[1367539200000,451.31,453.23,449.15,449.98],
[1367798400000,455.71,462.20,454.31,460.71],
[1367884800000,464.97,465.75,453.70,458.66],
[1367971200000,459.04,465.37,455.81,463.84],
[1368057600000,459.81,463.00,455.58,456.77],
[1368144000000,457.97,459.71,450.48,452.97]
]);


Highcharts 執行環境配置

今天在這個網站看到 Highcharts 的介紹, 對其功能大為驚豔 :

# 5个最顶级jQuery图表类库插件-Charting plugin

功能實在太強大了, 繪製的圖美美的, 非常 Professional. 這是一家來自挪威的小而美軟體公司 Highsoft AS 的產品, 利用 jQuery 與 HTML5 技術推出一系列資料視覺化工具 (Data Visualization Tools), 目前有五套 :
  1. Hightcharts : 用於繪製一般統計圖表
  2. Hightstock : 用於繪製金融資訊圖表
  3. Highmaps : 用於繪製地理圖表 (新產品)
  4. Highslide JS : 用於圖片視頻展示
  5. Highcharts Cloud : Highcharts 雲端內容提供平台 (免費試用中)
我目前最有興趣的是 Highstock, 不過還是得先從 Highchart 學起. Hightchart 源自該公司創辦人兼技術長 Torstein 為了顯示其下雪厚度的量測圖, 四處找尋適合的工具卻不可得, 才自行研發出 Highcharts. 當時正是 Flash 大行其道的時代, 但 Torstein 希望使用開放標準的非專利產品, Flash 顯然不敷需求. 於是在自行開發時使用的是開源的 HTML5 與 jQuery.

Higharts 採用 CC (Creative Commons) 創用授權, 只要遵循此要求, 對於個人及非營利用途, 可自由免費使用. 商業用途則每個網站收費 $90 元美金, 詳見 :

# https://shop.highsoft.com/highcharts.html

Highchrts 相關書籍目前有四本 :

# Learning Highcharts, Packt 出版
# Highcharts Cookbook, Packt 出版
# Highcharts Essentials, Packt 出版
# Beginning JavaScript charts with jqPlot, D3, and Highcharts, Apress 出版

前三本 Packt 的都是 Highcharts 專書, 而第四本 Apress 的主要是介紹 jqPlot 與 D3, 而 Highcharts 只是在第 18 章前面簡介一下如何從 jqPlot 過渡到 Hicharts 而已. 我個人覺得 jqPlot 較麻煩, 要引入一堆 js 檔, 設定上也比 Highcharts 囉嗦, 而檔案也沒有比較小.

使用 Highcharts 需先布置執行環境, 設定樣式表與函式庫來源. 若是本地網路使用, 請先下載 Highcharts :

# http://www.highcharts.com/download

解開後目錄結構如下 :


切到 js 目錄下, 其中第一個 hicharts.js 就是我們需要的檔案. 將其複製到專案目錄下, 我是放在 jquery 目錄下跟 jquery.js 放一起 :


這樣只要搭配 jQuery 就可以使用了. 下面參考 Document 中的範例 加以改編如下 :

範例 1 : http://tony1966.xyz/test/jquerytest/highcharts-1.htm [看原始碼]

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Highchart 測試</title>
  <script src="../jquery/jquery.js"></script>
  <script src="../jquery/highcharts.js"></script>
</head>
<body>
  <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto">
  </div>
  <script>
    $(function () {
      $('#container').highcharts({
    $(function () {
      $('#container').highcharts({
        chart: {type: 'bar'},
        title: {text: '零食消耗統計'},
        xAxis: {categories: ['冰棒', '小熊餅乾', '泡麵']},
        yAxis: {title: {text: '被吃掉的零食'}},
        series: [
          {name: '小葵', data: [1, 2, 4]},
          {name: '小新', data: [5, 7, 3]}
          ]
        });
      });
  </script>
</body>
</html>


當然也可以從 CDN 取得函式庫, 其 CDN 位置如下 :

# Highchart CDN

只要把 script 部分改為如下即可 :

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="http://code.highcharts.com/highcharts.js"></script>

範例 2 : http://tony1966.xyz/test/jquerytest/highcharts-2.htm [看原始碼]

此處 jQuery 使用 Google 的 CDN 供檔.

# Google CDN (hosted library)

下面範例三折線圖改自解壓縮後的 examples\line-basics 下的 index.html :

範例 3 : http://tony1966.xyz/test/jquerytest/highcharts-3.htm [看原始碼]

參考 :

# 初探 HighCharts 畫報表圖的好幫手 教學
# [jQuery] Javascript plotting library 畫圖 chart