flot介紹與使用(一款開源繪圖js插件)

 做了這麼多年軟件開發,圖表庫是經常使用到的,也踩過不少坑,我自己用過的就有:

  1. mschart(微軟出品,asp.net 和winform都可以使用,需要.net3.5以上)
  2. DevExpress控件(dev家的東西質量都不錯,收費,用這個替代了nplot)
  3. flot控件(js開源庫,輕量級,嵌入式設備網頁用這個比較好)
  4. highchart(js庫,最好用的商業庫,效果什麼的沒話說)
  5. echarts(js庫,百度維護的免費開源庫,整體上沒highcharts好,但是免費,功能也非常好強大,一般項目絕對夠用,百度內部也是用這個)
  6. ChartDirector(跨語言的圖表庫,使用MFC時候用過)
  7. nplot(.net圖表庫,.net2.0就可以使用,當時用這個主要是因爲.net版本問題)

           前2個是服務端生成圖片,這種庫適合大數據顯示,因爲js庫一般最多顯示20萬條記錄,再多的話要麼瀏覽器卡,要麼像IE那樣直接報內存過高,這種庫依賴於後臺語言,類似的還有directchart,jchart(java)等

           後面2個其實是我下個項目用的,下個項目是基於java struts2的,不過js圖表庫是和後臺語言無關的

           前面2種都是在後臺生成圖片然後發送到客戶端顯示,當然DevExpress雖然是生成圖片,但是還是支持鼠標事件的,關於它的介紹,我會另外寫篇文章,這裏主要介紹flot控件。

           flot控件是基於jquery的一款js插件,繪圖利用了html5標籤Canvas;雖然IE8及其以下版本不支持Canvas,但是flot利用javascript進行了模擬,使得在IE6也能夠支持,當然性能上或多或少會有影響,具體影響等我測試過後再發過來。

          一、flot使用方式

         flot和一般js插件使用方式一樣,只需要引用幾個js文件(包括jquery),然後放置一個div容器就可以了,官網上給的關鍵代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Flot Examples</title>
    <link href="layout.css" rel="stylesheet" type="text/css">
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]-->
    <script language="javascript" type="text/javascript" src="../jquery.js"></script>
    <script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
 </head>
    <body>
    <div id="placeholder" style="width:600px;height:300px;"></div>
<script type="text/javascript">
$(function () {
    var d1 = [[0, 3], [4, 8], [8, 5], [9, 13]];
    $.plot($("#placeholder"), [ d1 ]);
});
</script>
 </body>
</html>
從代碼可以看出來,主要引用了2個js文件 並使用了一個div標籤,使用是非常簡單的。

          二、flot與後臺交互

           flot的調用非常簡單,個人感覺和matlab的繪圖調用比較像,都是通過一個類似二維矩陣提供數據源,當然flot使用的是json對象數據,畢竟這個比較通用,與後臺交互的時候,要注意幾個地方:

           1.後臺生成的數據必定是一個字符串,該字符串必須符合json格式,比如:

string data="[[0, 3], [4, 8], [8, 5], [9, 13]]";

              前臺通過ajax接收到這個字符串後,是不能直接傳遞給plot函數的,必須轉化成js的json對象,比如:

function ajaxCallback(data){
    var jsonData=eval('('+data+')');
    $.plot($("#placeholder"), [ jsonData ]);
}
               這樣才能正確顯示

          2.X軸爲時間軸時候的顯示與交互

         利用flot繪製基於時間的曲線時候,要注意時間的轉化,從官方給出的demo中可以看出,flot是利用js的時間戳來將時間轉化爲整型數序列的。



此文章放棄編輯,建議 直接使用百度的Echarts,功能強大,文檔全面。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章