JS繪圖Flot如何實(shí)現(xiàn)可選顯示曲線圖功能
剛剛做了可以動(dòng)態(tài)去刷新的曲線圖,下面再來(lái)實(shí)現(xiàn)一個(gè)可以選擇顯示那個(gè)顯示值的曲線圖。
首先看一下效果:
下面的多選框,選擇以后會(huì)觸發(fā)一個(gè)事件,等同與重新繪制了曲線圖。
重點(diǎn)是需要的數(shù)據(jù)的格式,我們來(lái)看一下代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flot可選繪圖測(cè)試</title> <!--[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> <script type="text/javascript"> $(function () { // 顯示的數(shù)據(jù),注意對(duì)象格式 var datasets = { "usa": { label: "USA", data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]] }, "russia": { label: "Russia", data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]] }, "uk": { label: "UK", data: [[1988, 62982], [1989, 62027], [1990, 60696], [1991, 62348], [1992, 58560], [1993, 56393], [1994, 54579], [1995, 50818], [1996, 50554], [1997, 48276], [1998, 47691], [1999, 47529], [2000, 47778], [2001, 48760], [2002, 50949], [2003, 57452], [2004, 60234], [2005, 60076], [2006, 59213]] }, "germany": { label: "Germany", data: [[1988, 55627], [1989, 55475], [1990, 58464], [1991, 55134], [1992, 52436], [1993, 47139], [1994, 43962], [1995, 43238], [1996, 42395], [1997, 40854], [1998, 40993], [1999, 41822], [2000, 41147], [2001, 40474], [2002, 40604], [2003, 40044], [2004, 38816], [2005, 38060], [2006, 36984]] }, "denmark": { label: "Denmark", data: [[1988, 3813], [1989, 3719], [1990, 3722], [1991, 3789], [1992, 3720], [1993, 3730], [1994, 3636], [1995, 3598], [1996, 3610], [1997, 3655], [1998, 3695], [1999, 3673], [2000, 3553], [2001, 3774], [2002, 3728], [2003, 3618], [2004, 3638], [2005, 3467], [2006, 3770]] }, "sweden": { label: "Sweden", data: [[1988, 6402], [1989, 6474], [1990, 6605], [1991, 6209], [1992, 6035], [1993, 6020], [1994, 6000], [1995, 6018], [1996, 3958], [1997, 5780], [1998, 5954], [1999, 6178], [2000, 6411], [2001, 5993], [2002, 5833], [2003, 5791], [2004, 5450], [2005, 5521], [2006, 5271]] }, "norway": { label: "Norway", data: [[1988, 4382], [1989, 4498], [1990, 4535], [1991, 4398], [1992, 4766], [1993, 4441], [1994, 4670], [1995, 4217], [1996, 4275], [1997, 4203], [1998, 4482], [1999, 4506], [2000, 4358], [2001, 4385], [2002, 5269], [2003, 5066], [2004, 5194], [2005, 4887], [2006, 4891]] } }; // 對(duì)象要顯示的顏色,使用JQuery循環(huán),然后為對(duì)象增加一個(gè) color 屬性 var i = 0; $.each(datasets, function(key, val) { val.color = i; ++i; }); // 增加選擇可顯示國(guó)家的多選框 var choiceContainer = $("#choices"); $.each(datasets, function(key, val) { choiceContainer.append('<br/><input type="checkbox" name="' + key + '" checked="checked" id="id' + key + '">' + '<label for="id' + key + '">' + val.label + '</label>'); }); // 為可選框增加點(diǎn)擊事件 choiceContainer.find("input").click(plotAccordingToChoices); // 多選框點(diǎn)擊事件,用于移除或增加某個(gè)國(guó)家的顯示 function plotAccordingToChoices() { var data = []; choiceContainer.find("input:checked").each(function () { // 多選框的名字 var key = $(this).attr("name"); // 有該屬性,并且有該屬性為Key的數(shù)據(jù),則增加到顯示區(qū) if (key && datasets[key]) data.push(datasets[key]); }); // 如果有數(shù)據(jù)則設(shè)置數(shù)據(jù)。等同與把圖形重繪了,所以移除某個(gè)國(guó)家時(shí)可以不再顯示 if (data.length > 0) $.plot($("#placeholder"), data, { yaxis: { min: 0 }, xaxis: { tickDecimals: 0 } }); } // 調(diào)用一次以顯示某寫國(guó)家的值 plotAccordingToChoices(); }); </script> </head> <body> <div id="placeholder" style="width:600px;height:300px;"></div> <p id="choices">Show:</p> </body> </html>
選擇某個(gè)多選框的話會(huì)顯示其曲線。
以上示例來(lái)自官方并簡(jiǎn)單修改和增加了注釋,希望對(duì)一些人有所幫助。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript搜索自動(dòng)提示功能的實(shí)現(xiàn)
使用 jQuery(Ajax)/PHP/MySQL實(shí)現(xiàn)自動(dòng)完成功我覺(jué)得我有必要寫這個(gè)教程,因?yàn)樵?jīng)見(jiàn)到的大部分關(guān)于自動(dòng)完成的應(yīng)用程序都只是給你一個(gè)程序源碼包,然后告訴你怎么使用,而不是告訴你它是如何工作的以及為什么這樣做。2008-06-06基于JavaScript實(shí)現(xiàn)無(wú)限加載瀑布流
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)無(wú)限加載瀑布流,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07JavaScript實(shí)現(xiàn)輕松創(chuàng)建二維數(shù)組的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了JavaScript中實(shí)現(xiàn)輕松創(chuàng)建二維數(shù)組的多種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04超輕量級(jí)的js時(shí)間庫(kù)miment使用解析
這篇文章主要介紹了超輕量級(jí)的js時(shí)間庫(kù)miment使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Bootstrap的popover(彈出框)2秒后定時(shí)消失的實(shí)現(xiàn)代碼
Bootstrap Popover(彈出框)是使用定制的 Jquery 插件創(chuàng)建的。它可以用來(lái)顯示任何元素的一些信息。這篇文章主要介紹了Bootstrap的popover(彈出框)2秒后定時(shí)消失功能,需要的朋友參考下2017-02-02JS對(duì)img標(biāo)簽進(jìn)行優(yōu)化使用onerror顯示默認(rèn)圖像
這篇文章主要介紹了JS對(duì)img標(biāo)簽進(jìn)行優(yōu)化使用onerror顯示默認(rèn)圖像,需要的朋友可以參考下2014-04-04