關於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