Spaces:
Running
Running
<!-- | |
Licensed to the Apache Software Foundation (ASF) under one | |
or more contributor license agreements. See the NOTICE file | |
distributed with this work for additional information | |
regarding copyright ownership. The ASF licenses this file | |
to you under the Apache License, Version 2.0 (the | |
"License"); you may not use this file except in compliance | |
with the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, | |
software distributed under the License is distributed on an | |
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
KIND, either express or implied. See the License for the | |
specific language governing permissions and limitations | |
under the License. | |
--> | |
<meta charset="utf-8"> | |
<style> | |
text { | |
font: 10px sans-serif; | |
text-anchor: middle; | |
} | |
.node--hover circle { | |
stroke: #000; | |
stroke-width: 1.2px; | |
} | |
#main { | |
width: 1000px; | |
height: 500px; | |
} | |
</style> | |
<div id="main" style="width:1200px; height:960px;"></div> | |
<svg width="960" height="960"><g transform="translate(1,1)"></g></svg> | |
<script src="https://d3js.org/d3.v4.min.js"></script> | |
<script src="../dist/echarts.js"></script> | |
<script src="./lib/testHelper.js"></script> | |
<script src="./lib/config.js"></script> | |
<script> | |
var stratify = d3.stratify() | |
.parentId(function(d) { | |
return d.id.substring(0, d.id.lastIndexOf(".")); | |
}); | |
d3.csv("data/flare.csv", function(error, rawData) { | |
if (error) throw error; | |
var root = stratify(rawData) | |
.sum(function(d) { | |
return d.value; | |
}) | |
.sort(function(a, b) { | |
return b.value - a.value; | |
}); | |
var maxDepth = 0; | |
var seriesData = root.descendants().map(function (node) { | |
maxDepth = Math.max(maxDepth, node.depth); | |
return [ | |
node.value, | |
node.depth, | |
node.id | |
]; | |
}); | |
var chart = echarts.init(document.getElementById('main')); | |
function renderItem(params, api) { | |
var context = params.context; | |
if (!context.nodes) { | |
d3.pack() | |
.size([api.getWidth() - 2, api.getHeight() - 2]) | |
.padding(3)(root); | |
context.nodes = {}; | |
root.descendants().forEach(function (node, index) { | |
context.nodes[node.id] = { | |
index: index, | |
node: node | |
} | |
}); | |
} | |
var nodePath = api.value(2); | |
var node = context.nodes[nodePath].node; | |
var isLeaf = !node.children || !node.children.length; | |
var textFont = api.font({ | |
fontSize: 12, | |
fontFamily: 'Arial' | |
}); | |
var focus = new Uint32Array(node.descendants().map(function (node) { | |
return context.nodes[node.id].index; | |
})); | |
var nodeName = isLeaf ? nodePath.slice(nodePath.lastIndexOf('.') + 1).split(/(?=[A-Z][^A-Z])/g).join('\n') : ''; | |
var z2 = api.value(1) * 2; | |
return { | |
type: 'circle', | |
focus: focus, | |
shape: { | |
cx: node.x, | |
cy: node.y, | |
r: node.r | |
}, | |
z2: z2, | |
textContent: { | |
type: 'text', | |
style: { | |
text: nodeName, | |
width: node.r * 1.3, | |
overflow: 'truncate', | |
fontSize: node.r / 3 | |
// fill: 'blue' | |
}, | |
emphasis: { | |
style: { | |
overflow: null, | |
fontSize: Math.max(node.r / 3, 12) | |
// fill: 'red' | |
} | |
} | |
}, | |
textConfig: { | |
position: 'inside' | |
}, | |
style: { | |
fill: api.visual('color'), | |
text: nodeName, | |
font: textFont, | |
}, | |
emphasis: { | |
style: { | |
font: textFont, | |
shadowBlur: 20, | |
shadowOffsetX: 3, | |
shadowOffsetY: 5, | |
shadowColor: 'rgba(0,0,0,0.3)' | |
} | |
} | |
}; | |
} | |
var option = { | |
tooltip: {}, | |
visualMap: { | |
show: false, | |
min: 0, | |
max: maxDepth, | |
dimension: 1, | |
inRange: { | |
color: ['#006edd', '#e0ffff'] | |
} | |
}, | |
series: { | |
type: 'custom', | |
renderItem: renderItem, | |
coordinateSystem: null, | |
encode: { | |
tooltip: 0, | |
itemName: 2 | |
}, | |
data: seriesData | |
} | |
}; | |
chart.setOption(option); | |
}); | |
</script> | |