Echarts條形圖實戰(zhàn)

最近公司項目要做一個統(tǒng)計圖用到了echarts里面的條形圖跨扮,對于以前就接觸過一點echarts的我信心滿滿侈离,沒想到動手的時候才發(fā)現(xiàn)問題百出,看來實踐真的是檢驗學習成效的標準凉夯。這里有兩種條形圖淮韭,一種橫向的一種縱向的垢粮。

不管是哪種都要先初始化echarts:

// 基于準備好的dom,初始化echarts實例
var myChart = echarts.init(document.getElementById('main'));

這里橫向和縱向柱狀圖的配置無非就是x軸和y軸的不同靠粪,所以我寫了兩個配置項:

//橫向圖表的配置
var optionH = {
        grid:{
            x:150
        },
        color: ['#9BBB59'],
        title: {
            textStyle: {  
                color: '#aaa',
                fontWeight: '600'
            },
            x:'50'//設(shè)置標題的偏移
        },
        tooltip: {
            trigger: 'axis',
            formatter: "完成進度 : <br/>蜡吧 : {c}%"
        },
        toolbox: {
            show : true,
            x:'800',
            feature : {
                dataView : {show: false, readOnly: false},  
                magicType : {show: true, type: ['line', 'bar']},  
                restore : {show: true},  
                saveAsImage : {show: true}
            }
        },
        xAxis: [{
             type : 'value',
             axisLabel : {
                 formatter: '{value} %'
              }, 
             min: 0,
             max: 100,
             interval: 10 
            }],
       yAxis: [{
           type : 'category',
           axisLabel:{
               //X軸刻度配置
               interval:0 
              },
           data: ['']
    
       }],
       series: [{
           xAxisIndex: 0,
           yAxisIndex: 0,
           type: 'bar',
           barMaxWidth:60,//最大寬度
           data: ['']
       }]
};
// 縱向圖表的配置
var optionV = {
    color: ['#9BBB59'],
    title: {
            text: '',
            textStyle: {  
                color: '#aaa',
                fontWeight: '600'
            },
            x:'50'
                
        },
    tooltip: {
            trigger: 'axis',
            formatter: "完成進度 : <br/> : {c}%"
        },
    toolbox: {
            show : true,
            x:'800',
            feature : {
                dataView : {show: false, readOnly: false},  
                magicType : {show: true, type: ['line', 'bar']},  
                restore : {show: true},  
                saveAsImage : {show: true}
            }
        },
    xAxis: [{
            type : 'category',
            data: [''],
            axisLabel:{
               //X軸刻度配置
               interval:0 
              }
            }
           ],
    yAxis: [{
           type : 'value',
           axisLabel : {
               formatter: '{value} %'
           }, 
           min: 0,
           max: 100,
           interval: 10
       }],
    series: [{
           type: 'bar',
           barMaxWidth:60,//最大寬度
           data: ['']
       }]
};

這個統(tǒng)計圖一共有5種角色的區(qū)分(市級占键、區(qū)級昔善、學校、班主任畔乙、學生)

首先市級的是縱向條形圖君仆,x軸為類別數(shù)據(jù),y軸為百分比:

//市級  統(tǒng)計圖
function loadOptionByCity(){   
   // 使用剛指定的配置項和數(shù)據(jù)顯示圖表
    myChart.setOption(optionV);
    var njmc= $('#staGradeSelect option:selected').val();
    var termNo = $('#staTermNo option:selected').val();
    $.ajax({  
        url: ctx + '/SCH_STATISTIC_JLYD_Action.a?findCountyStatisticScore',  
        type: 'post', 
        data: {
            "njid" : njmc,   //年級
            "termNo" :termNo  //學期
        },
        dataType: 'json',  
        async: false,  
        success: function (result) { 
            var resultCode = result.resultCode;
            var resultMsg = result.resultMsg;
            var resultList = result.resultList;
            var xArray=[];
            if (result)  
            {  
                var option = myChart.getOption();  
                option.series[0].data = [];
                option.title[0].text = titleArray[0];
                if (resultList.length == 0) { 
                    option.series[0].data = [];  
                    option.xAxis[0].data = []  
                } else { 
                    for (var i = 0; i <resultList.length; i++) {         
                            option.series[0].data.push(resultList[i].ztwcjd);  
                            xArray.push(resultList[i].qxmc);                        
                    }   
                    option.xAxis[0].data=xArray;
                } 
                myChart.setOption(option,true);  
            }
        },
        error: function ()  
        {  
            alert("不好意思請求失敗了");  
        }  
    })  
}; 
      

渲染出來的圖表是這樣:

Paste_Image.png

區(qū)級也是縱向條形圖牲距,只不過x軸數(shù)據(jù)是寫死的:

//區(qū)級  統(tǒng)計圖
function loadOptionByArea()  
{ 
    // 使用剛指定的配置項和數(shù)據(jù)顯示圖表
    myChart.setOption(optionV);
    var njid= $('#staGradeSelect option:selected').val();
    var termNo = $('#staTermNo option:selected').val();
    $.ajax({  
        url: ctx + '/SCH_STATISTIC_JLYD_Action.a?findCountyStatisticScore',  
        type: 'post', 
        data: {
            "qxdm" :qxdmSelf,
            "njid" : njid,   //年級
            "termNo" :termNo  //學期
        },
        dataType: 'json',  
        async: false,  
        success: function (result) { 
            var resultCode = result.resultCode;
            var resultMsg = result.resultMsg;
            var resultList = result.resultList;
            if (result)  
            {  
                var option = myChart.getOption();  
                option.series[0].data = [];
                option.title[0].text = titleArray[1];
                if (resultList.length == 0) { 
                    option.series[0].data = [];  
                    option.xAxis[0].data = ['啊啊','哇哇','啦啦','嘻嘻','呵呵']  
                } else { 
                    var xArray=['啊啊','哇哇','啦啦','嘻嘻','呵呵']  ;
                    var yArray = [resultList[0].ztwcjd,resultList[0].zgdfjd,resultList[0].zgtbjd,resultList[0].zjtbjd,resultList[0].actbjd];
                    option.series[0].data=yArray
                    option.xAxis[0].data=xArray;
                } 
                myChart.setOption(option,true);  
            }
        },
        error: function ()  
        {  
            alert("不好意思請求失敗了");  
        }  
    })  
}; 

渲染出來的圖表是這樣:

Paste_Image.png

校級返咱、班主任、學生三個角色都是橫向條形圖牍鞠,只不過傳的參數(shù)和接口地址不一樣咖摹,所以我封裝了一個方法:

function loadOption(url,data)         
{
   // 使用剛指定的配置項和數(shù)據(jù)顯示圖表
   myChart.setOption(optionH);
   $.ajax({  
       url: ctx + url,  
       type: 'post', 
       data: data,
       dataType: 'json',  
       async: false,  
       success: function (result) { 
           var resultCode = result.resultCode;
           var resultMsg = result.resultMsg;
           var resultList = result.resultList;                 
           if (result)  
           {  
               var option = myChart.getOption();  
               option.series[0].data = [];
               option.yAxis[0].data = [];
               option.title[0].text = titleArray[2];
               if (resultList.length == 0) { 
                   option.series[0].data = [];  
                   option.yAxis[0].data = []  
               } else { 
                   for(var i=0;i<resultList.length;i++){
                       option.series[0].data.push(resultList[i].WCJD);
                       option.yAxis[0].data.push(resultList[i].LABELNAME);
                   }
               } 
               myChart.setOption(option,true);  
           }
       },
       error: function ()  
       {  
           alert("不好意思請求失敗了");  
       }  
   })  
}; 

Paste_Image.png

總結(jié)

tooltip: {
              trigger: 'axis',
              formatter: "完成進度 : <br/> : {c}%"
        }
  1. 提示框觸發(fā)方式:trigger
    tooltip的trigger的值可以有'item'难述、'axis'萤晴。
    'item':數(shù)據(jù)項圖形觸發(fā),主要在散點圖胁后,餅圖等無類目軸的圖表中使用店读。
    'axis':坐標軸觸發(fā),主要在柱狀圖攀芯,折線圖等會使用類目軸的圖表中使用
  2. 提示框的格式:formatter
    折線(區(qū)域)圖两入、柱狀(條形)圖、K線圖 : {a}(系列名稱)敲才,(類目值)择葡,{c}(數(shù)值), zh5kk7s(無)如下圖:
Paste_Image.png

工具箱紧武,非常方便,可以條形圖折線圖相互轉(zhuǎn)換敏储,效果如下圖:

toolbox: {
            show : true,
            x:'800',//在x軸的位置
            feature : {
                dataView : {show: false, readOnly: false},  //數(shù)據(jù)視圖
                magicType : {show: true, type: ['line', 'bar']},  //動態(tài)轉(zhuǎn)換
                restore : {show: true},  //刷新
                saveAsImage : {show: true}//保存為圖片
            }
        },
Paste_Image.png
 xAxis: [{
            type : 'category',
            data: [''],
            axisLabel:{
               //X軸刻度配置
               interval:0 
              }
            }
           ]
這里需要設(shè)置x軸標簽的刻度阻星,不然會出現(xiàn)默認刻度單位過大或者是數(shù)據(jù)標簽隔一個顯示一個的怪異現(xiàn)象
yAxis: [{
           type : 'value',
           axisLabel : {
               formatter: '{value} %'
           }, 
           min: 0,
           max: 100,
           interval: 10
       }],
這里需要注意的是我想讓y軸的刻度按百分比顯示,從10%到100%,間隔為10妥箕,用到了神奇的formatter

series: [{
          type: 'bar',
          barMaxWidth:60,//最大寬度
          data: ['']
      }]
通過barMaxWidth設(shè)置柱子的最大寬度滥酥,不然數(shù)據(jù)少的時候,柱子會特別寬畦幢,影響美觀

還有一個需要注意的地方坎吻,每次渲染圖表都讓數(shù)據(jù)置空option.series[0].data = [];不然會出現(xiàn)數(shù)據(jù)堆疊的怪異現(xiàn)象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宇葱,隨后出現(xiàn)的幾起案子瘦真,更是在濱河造成了極大的恐慌,老刑警劉巖黍瞧,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诸尽,死亡現(xiàn)場離奇詭異,居然都是意外死亡印颤,警方通過查閱死者的電腦和手機您机,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來年局,“玉大人际看,你說我怎么就攤上這事∧诚埽” “怎么了仿村?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兴喂。 經(jīng)常有香客問我蔼囊,道長,這世上最難降的妖魔是什么衣迷? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任畏鼓,我火速辦了婚禮,結(jié)果婚禮上壶谒,老公的妹妹穿的比我還像新娘云矫。我一直安慰自己,他們只是感情好汗菜,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布让禀。 她就那樣靜靜地躺著,像睡著了一般陨界。 火紅的嫁衣襯著肌膚如雪巡揍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天菌瘪,我揣著相機與錄音腮敌,去河邊找鬼。 笑死,一個胖子當著我的面吹牛糜工,可吹牛的內(nèi)容都是我干的弊添。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼捌木,長吁一口氣:“原來是場噩夢啊……” “哼油坝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钮莲,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤免钻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后崔拥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體极舔,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年链瓦,在試婚紗的時候發(fā)現(xiàn)自己被綠了拆魏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡慈俯,死狀恐怖渤刃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贴膘,我是刑警寧澤卖子,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站刑峡,受9級特大地震影響洋闽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜突梦,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一诫舅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宫患,春花似錦刊懈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至皇帮,卻和暖如春泽疆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玲献。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌年。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓瓢娜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親礼预。 傳聞我的和親對象是個殘疾皇子眠砾,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 什么是ECharts ECharts是百度開源的純 Javascript 圖表庫,目前開源可以與highchart...
    yangdm閱讀 3,740評論 0 0
  • 圖表思維是數(shù)據(jù)分析思維中的最簡單和最基本的思維托酸,主要是通過圖形和表格對數(shù)據(jù)進行轉(zhuǎn)化褒颈。 文字有局限 看到這段話,你會...
    keeya閱讀 5,645評論 1 21
  • 晚上励堡,十點半谷丸,地鐵的座位并不多,甚至空間仍所剩無幾应结。 我常常疑惑刨疼,無論白天,夜晚鹅龄,工作日揩慕,休息時,北京的地鐵上總...
    滄海云閱讀 362評論 0 1
  • 每月往一個固定地方存上兩百money. ..............以后就可以去做說走就走的旅行了
    優(yōu)雅kk閱讀 163評論 1 0
  • 文/ Mercealin 你開玩笑問他扮休,你結(jié)婚那天他會來嗎迎卤?他像往常一樣寵溺地揉了揉你的頭發(fā)說,笨蛋玷坠,新郎不去你跟...
    Mercealin閱讀 1,124評論 20 9