echarts2 tree樹圖自定義顯示縮放大小、位置
<<部落格遷移,來自我的51cto部落格http://11095961.blog.51cto.com/11085961/1954989>>
看到網上關於echarts tree的資料有點少,做專案恰巧遇到這個,把一些獲得分享給大家。
從echarts、官方API中我們似乎只能定義根節點的位置,並不能指定樹圖整體的大小以及其整體在dom顯示的位置,在tree生成過程中只是以根節點向下方左右兩邊擴充套件。從echarts官網提供的API我們可以知道var chart = echarts.init(dom); chart.getZrender();獲取其封裝的canvas庫ZRender例項,通過調整這個例項來干預其基層模組自定義其顯示。
下面為大家分享我的實現自定義顯示tree整體效果的過程,由於中間測試資料佔的行數太多,我就不整個貼出來原始碼了,進提供關鍵部分的程式碼及說明。想要完整程式碼的朋友可以下載附件。(由於是專案中的設計抽取出來經過修改來分享的,有些實現部分可能看起來怪怪的,大家見諒,看關鍵部分就ok了)
依舊是貼出關鍵點,原始碼請至下方github地址下載:
var myGlobalTreeChart;
var treeNodePadding = 50; //節點間最小間隔
var treeTopPadding = 120; //tree距頂端的距離
var rightNode;//最右側節點,用於計算偏移量
//構建tree
function doGlobalTreeChart(ec,data) {
myGlobalTreeChart.setOption(getGlobalTreeOption());
//生成圖表後做調整
adjustTreeView();
}
//調整tree顯示
function adjustTreeView() {
var zr = myGlobalTreeChart.getZrender();
var domWidth = zr.painter.getWidth();
var treeWidth = getTreeWidth(zr);
if (treeWidth <= domWidth)
return;
var adjustSize = domWidth / treeWidth * 0.95; //多縮小0.05不至於完全充盈dom
var lastNodeX = rightNode.style.x * adjustSize;
var rightOffset = (domWidth - lastNodeX) - (domWidth - treeWidth * adjustSize)/2; //儘可能的讓其居中
zr.painter._layers[1].scale = [ adjustSize, adjustSize, 0, 0 ]; //前兩個為縮放大小,後兩個為縮放原點
zr.painter._layers[1].position = [rightOffset, treeTopPadding ]; //偏移量
myGlobalTreeChart.refresh();
}
//計算最左邊節點和最右邊節點(symbol為image或icon)的間隔即為樹圖寬度
function getTreeWidth(zr) {
var nodes = zr.storage._roots;
var max = 0;
var min = 0;
for(var i=0; i < nodes.length; i++){
if(nodes[i].type == 'image' || nodes[i].type == 'icon'){
var nodeX = nodes[i].style.x;
if(nodeX > max){
max = nodeX;
rightNode = nodes[i];
continue;
}
if(nodeX < min){
min = nodeX;
}
}
}
return max - min;
}
完整原始碼:https://github.com/hzhqk/echarts.git下的dynamic echarts tree目錄下
相關文章
- 自定義bmp影像縮放及在lcd螢幕任意位置顯示
- JS控制圖片顯示的大小(圖片等比例縮放)JS
- jQuery Validate自定義錯誤資訊顯示位置jQuery
- 自定義圖片裁剪之雙指縮放思路
- QLabel顯示圖片 ,並實現縮放
- html中背景圖按比例縮放全屏顯示HTML
- win10怎麼開啟自定義縮放 win10怎麼自定義縮放Win10
- Flutter 自定義縮放控制元件Flutter控制元件
- 自定義來電顯示
- vue自定義指令擷取圖片中心顯示Vue
- 自定義圖示列表
- 自定義SeekBar顯示進度
- MUI DtPicker 顯示自定義日期UI
- 在Windows XP/2003中自定義檔案縮圖大小(轉)Windows
- QT 自定義QGraphicsItem 縮放後旋轉 圖形出現漂移問題QT
- app直播原始碼,el-button自定義圖片顯示APP原始碼
- 按比例縮放圖片大小程式碼例項
- 如何自定義終端顯示配置
- win10怎麼在不改變圖示大小的前提下調整字型大小(非縮放)Win10
- VS+Qt+Halcon——顯示圖片,實現滑鼠縮放、移動圖片QT
- Win10電腦怎麼自定義縮放螢幕比例?Win10系統自定義縮放螢幕比例教程Win10
- 前端如何修改svg圖示大小和平移位置前端SVG
- win10 自定義縮放比例被鎖定怎麼辦_win10 自定義縮放比例被鎖定如何解決Win10
- win10怎麼縮小桌面圖示大小 win10調整縮小桌面圖示大小設定方法Win10
- 直播原始碼開發,el-button自定義圖片顯示原始碼
- 直播平臺原始碼,el-button自定義圖片顯示原始碼
- UIImage 圖片處理:截圖,縮放,設定大小,儲存UI
- 直播商城原始碼,密碼輸入框自定義顯示隱藏圖示原始碼密碼
- Vue富文字帶圖片修改圖片大小自定義選擇項自定義字型Vue自定義字型
- Win10如何自定義硬碟圖示_win10自定義硬碟圖示的教程Win10硬碟
- openlayers3 自定義鷹眼縮圖S3
- 自定義progressBar顯示靜態資料
- Qt中關於QLabel等其顯示內容的縮放與對齊,動態圖的顯示QT
- # 自定義view————流程位置View
- 為bootstrap新增更多自定義圖示boot
- 自定義 RMAN 顯示的日期時間格式
- Bartender 4:圖示顯示切換大變樣,還能在選單欄自定義文字
- 網頁佈局------導航欄下標縮放顯示網頁