1. 程式人生 > >關於Echarts的formatter函式的自定義(影象上顯示一組資料的影象,當滑鼠移上去的時候顯示五組資料)

關於Echarts的formatter函式的自定義(影象上顯示一組資料的影象,當滑鼠移上去的時候顯示五組資料)

前幾天,有那麼一個專案,要用Echarts這款外掛,實現一個柱狀圖的展示一組資料,其他的資料當滑鼠以上去影象上的時候,相應的影象顯示相應資料組,如下圖

這是最終的效果圖

這是傳過來的json檔案

{
"data": [
		 {
		"free_space": 2.94,
		"sum_blocks": 3080,
		"sum_space": 313.13,
		"tablespace_name": "EXAMPLE",
		"used_rate": 99.06,
		"used_space": 310.19
		},
		{
		"free_space": 9501,
		"sum_blocks": 2621440,
		"sum_space": 20480,
		"tablespace_name": "SLOB",
		"used_rate": 53.61,
		"used_space": 10979
		},
		{
		"free_space": 7582,
		"sum_blocks": 94720,
		"sum_space": 740,
		"tablespace_name": "SYSAUX",
		"used_rate": 94.68,
		"used_space": 700.62
		},
		{
		"free_space": 6684,
		"sum_blocks": 85647,
		"sum_space": 510,
		"tablespace_name": "DFHTGJ",
		"used_rate": 85.28,
		"used_space": 582.14
		},
		{
		"free_space": 2855,
		"sum_blocks": 62487,
		"sum_space": 380,
		"tablespace_name": "HIASD",
		"used_rate": 68.24,
		"used_space": 358.56
		}
],
"status": "ok"
}

在影象上顯示的value的值是“userd_rate”的值,之所以顯示這一個值,是因為這個每一個數據組的單位值大小不同,所以,如果全部的影象上都顯示資料的話,很多值都是顯示不了的,故就只顯示一組資料,他的是資料值當滑鼠移到資料的影象上時,以懸浮提示框的形式顯示出來。
function analysis (data){    
    var end_obj = []; 
   for(i in data){
     var obj = {name:'', datas:[]};
        obj.name = data[i].tablespace_name;
        obj.value = data[i]['used_rate(%)'];
        obj.datas[0] = data[i]['free_space(m)'];
        obj.datas[1] = data[i]['sum_blocks'];
        obj.datas[2] = data[i]['sum_space(m)'];
        obj.datas[3] = data[i]['used_space(m)'];
        end_obj.push(obj);
        }
    return end_obj;  

};

tooltip : {
                    trigger: 'item',//是否節點觸發
                    padding: 5,
                    formatter: function(a){
                        return ('資料名稱:'+a['name']
                               +'</br>當前值:'+a['value']
                               +'<br>free_space:'+a['data'].datas[0]
                               +'<br>sum_blocks:'+a['data'].datas[1]
                               +'<br>sum_space:'+a['data'].datas[2]
                               +'<br>used_space:'+a['data'].datas[3]
                               );
                    },
                }

itemStyle: {
                            normal: {
                                color: function(params) {
                                    // build a color map as your need.
                                   var colorList = ['#B5C334','#C1232B'];
                                 
                                    if(params.value <= 50){
                                       return colorList[0];

                                    }else{
                                        return colorList[1];
                                    }
                                   
                                }
                            }
                        }


 $.getJSON("./aa.json").done(function(res){
          var data = res.data;
              var name = [];
              for(i in data){
                name.push(data[i].tablespace_name);
              }
          option.series[0].data = analysis(res.data);
          option.xAxis[0].data = name;
          db_chart.setOption(option);
        })


這些是實現功能的主要程式碼,之前只知道傳遞到tooltip裡面formatter函式引數params是從series裡面的data傳遞進去的,所以之前一直都在後面ajax的option.seris[0].data裡面,這裡面做文章,想要把我想展示的資料的影象直接設定在這裡的data,然後其他資料就不寫到這裡的data裡面,但是後面發現,所有的資料都是來源於這裡的data,所以傳遞進去的資料還是會出現五組影象,後面才發現,真正實現影象的是data裡面的一個叫做 value的物件,這個value只要有值,影象就會顯示出來,知道這個問題後,就請教了相關的人士,他給我寫了個函式,告訴我把想要傳遞進去變成影象的那組資料賦值給value,其他的資料存在一個數組裡面,這個陣列你可以隨意命名,這裡是datas,在這個datas是一個物件性陣列,每一個值都是一個物件,這些就是我想要在tooltip的提示框裡面顯示的資料。

analysis函式就是這麼一個處理series的data裡面的資料的函式,將ajax獲取到的資料傳入這個函式,res.data就是上面那個json檔案,所以,當這個函式傳遞到analysis這個函式裡面時,函式裡面的data引數就是這個json格式的資料,接下來,你就可以為所欲為了,想要將什麼樣的格式的資料作為你的value,想要返回給series.data什麼樣的資料,,你都可以自己定義,最後,在tooltip這裡面的formatter函式裡面的引數  a  ,也是series.data的值,所以,你想要在提示框裡面顯示什麼,你也可以為所欲為,在這裡,我也遇到過一兩個小問題,為什麼option裡面的資料都有,但是就是不顯示影象,原因是你有可能沒有setOption(option);;第二,data是一個數組,在給data賦值的時候,一定要小心。

影象上有兩個顏色,這個顏色是根據value的大小來設定的,在itemstyle裡面,color可以自定義函式實現你想要實現的顏色標註,當然,還有markline,這裡我只做了color,這裡面傳遞進去的引數也是series.data,還是那句話,有了這些,你就可以為所欲為了。

最後,如果對於這種效果的實現有什麼更好的建議,真心希望能夠提出來討論下。我也是剛剛接觸Echarts,說的不對的地方,希望海涵。

相關推薦

關於Echarts的formatter函式定義影象顯示資料影象滑鼠上去的時候顯示資料

前幾天,有那麼一個專案,要用Echarts這款外掛,實現一個柱狀圖的展示一組資料,其他的資料當滑鼠以上去影象上的時候,相應的影象顯示相應資料組,如下圖 這是最終的效果圖 這是傳過來的json檔案 { "data": [ { "free_space": 2.94

jquery懸停滑鼠上去顯示全部內容包括多餘隱藏內容

1.bootrap的懸停顯示    只需要引入bootstrap的js,css即可。關鍵程式碼 $('a').tooltip({title: "我是一個提示框,我在頂部出現",placement:

html設定超出部分隱藏滑鼠上去顯示全部

<td><div :title="item.invoiceNumber" style="width: 200px; height: 20px; overflow: hidden; d

CSS實現縮圖滑鼠上去顯示大圖

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

為GridView每個單元格滑鼠上去顯示div

{                string table ="<table cellspacing='0' rules='all' bordercolorlight='#b4b1b1' bordercolordark='#ffffff' border='1'><tr class='titl

OpenLayers官方示例詳解十之在定義canvas元素渲染OpenLayers的幾何圖形Render geometries to a canvas

目錄 一、示例簡介 二、程式碼詳解 一、示例簡介     這個示例展示瞭如何將OpenLayers的幾何圖形渲染到任意的canvas元素上。 二、程式碼詳解     ol.render.toContext()方法能夠將任意ca

Vue Quill Editor定義圖片/視訊Element UI + OSS、字型、字型大小、段落等

  近期專案中需要使用富文字編輯器,開始想到的富文字編輯器是百度的UEditor,UEditor功能齊全、外掛多,但是圖片只能上傳到本地伺服器,如果需要上傳到其他伺服器需要改動原始碼,而且是PHP、JSP、ASP、.Net版本,同時UEditor體積過大壓縮包有

Spring boot+Security OAuth2 爬坑日記4定義異常處理

為了方便與前端更好的互動,服務端要提供友好統一的資訊返回格式,(他好我也好 ->_-> ),Spring Security OAuth2 提供了自定義異常的入口;我們需要做的就是實現對應的介面,然後將實現的類配置到對應的入口即可。預設的資訊返回格式

定義方法限制傳圖片檔案的格式

import org.apache.catalina.core.ApplicationPart; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.w

Qt之定義搜索框——QLineEdit裏增加一個Layout還不影響正常輸入文字好像是種比較通吃的方法

too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現

jqueryValidator定義校驗規則的種方式不覆蓋源碼

|| util isdigit tgt car col bug 特殊字符 new 1.封裝自定義驗證方法-validate-methods.js /**************************************************************

jqueryValidator定義校驗規則的種方式覆蓋源碼

至少 聯系電話 wem length 登錄密碼 密碼 tro [0 verify 1.自定義js文件:jqValid-extend.js 內容: function setDefaultValidate(){ $.extend(true, $.validato

定義ScrollView 實現拉下拉的回彈效果--並且子控件中有Viewpager的情況

是否 AS abs pri tar utils lda animation ted onInterceptTouchEvent就是對子控件中Viewpager的處理:左右滑動應該讓viewpager消費 1 public class MyScrollView ext

NPOI+反射+定義特性實現傳excel轉List及驗證

type set custom pre script private property xssf don 1.自定義特性 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited

Android bc信用盤搭建定義behavior 實現滑 隱藏底部view

退出 Y軸 log rect app sum string dsl oss 布局 <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent"

博客園樣式定義待更新

ava white tde 百度一下 padding element win timer rip 總感覺這件事情做的晚了哈哈。 以前寫博客總是一個人默默地寫,現在竟然出現了兩個吐槽我挖坑不填的哈哈。(非常感謝~) 大概是終於有個人能夠督促自己學習了,你們怎麽不早點來?!!

iOS 底部按鈕 工具欄 Tabbar 及 Tabbar 的定義中間突出

大多數應用使用系統自帶的Tabbar就能夠滿足需求 通常情況都是在AppDelegate.m裡建立一個UITabBarController將其它的控制器用UINavigationController包裝一層,再新增到UITabBarController的viewControllers裡。再將UI

beetl定義標籤 select 傳檔案

select @var res = res!dict.allDict(); //結果集 @var valueKey = valueKey; //結果物件中作為select > option > value 值的屬性名 @var textKey = textKey;

TensorFlow筆記-06-神經網路優化-損失函式,定義損失函式,交叉熵

TensorFlow筆記-06-神經網路優化-損失函式,自定義損失函式 **神經元模型:用數學公式比表示為:f(Σi xi*wi + b), f為啟用函式** 神經網路 是以神經元為基本單位構成的 啟用函式:引入非線性啟用因素,提高模型的表達能力 常用的啟用函式有relu、sigmoid、tanh等 (1)

定義檔案的

如同我的上一篇部落格,在這裡上傳檔案的思路和上傳照片的思路是大致一樣的,只需要改變幾個地方。 在這裡涉及到一個問題就是伺服器檔案的名字是唯一的,我們可以用的uuid來大體實現一個唯一的檔名 def createFileName():      fileName = str