工作中有用到关系图,在这里做个调试
配置项如下
var nodeData = [
{
name: '名称一',
value: 10,
// x: '50%',
// y: '50%',
// category: 1,
symbol: 'circle',
symbolSize: 50,
// fixed: true,
itemStyle: {
color: '#e47485',
},
},
{
name: '名称二',
value: 30,
symbolSize: 60,
},
{
name: '名称三',
value: 40,
symbolSize: 80,
},
{
name: '名称四',
value: 50,
symbolSize: 100,
},
{
name: '名称五',
value: 60,
symbolSize: 60,
},
{
name: '名称六',
value: 70,
symbolSize: 80,
},
{
name: '名称七',
value: 80,
symbolSize: 100,
},
{
name: '名称八',
value: 90,
symbolSize: 60,
},
{
name: '名称九',
value: 100,
symbolSize: 80,
},
{
name: '名称十',
value: 110,
symbolSize: 100,
},
];
var links = [
{
source: '名称一',
target: '名称二',
},
{
source: '名称一',
target: '名称三',
},
{
source: '名称一',
target: '名称四',
},
{
source: '名称一',
target: '名称五',
},
{
source: '名称一',
target: '名称六',
},
{
source: '名称一',
target: '名称七',
},
{
source: '名称一',
target: '名称八',
},
{
source: '名称一',
target: '名称九',
},
{
source: '名称一',
target: '名称十',
},
];
var option = {
series: [
{
type: 'graph',
name: '关系图',
// coordinateSystem: null, // 使用的坐标系
// center: [200, 200],
// zoom: 10,
layout: 'force',
draggable: true,
force: {
initLayout: 'circular',
repulsion: 2000, // 节点之间的斥力
gravity: 0.1, // 节点之间的引力
edgeLength: [100, 200], // 边的两个节点之间的距离,这个距离会受 repulsion 影响
},
roam: true, // 是否开启鼠标缩放和平移漫游
// edgeSymbol: ['none', 'arrow'],
itemStyle: {
color: '#0090d0',
},
lineStyle: {
color: '#aaa',
width: 2,
type: 'solid',
},
label: {
position: 'inside',
show: true,
},
edgeLabel: {},
categories: [
{
symbol: 'circle',
name: '名称一',
},
],
data: nodeData.map(function(item) {
item.fixed = false
return item
}),
edges: links,
},
],
};
myChart.on('click', function (params) {
console.log('点击', params);
var nodeName = params.name;
myChart.setOption({
series: [
{
name: '关系图',
data: nodeData.map(function (item, index) {
if (item.name === nodeName) {
item.itemStyle = {
color: 'orange',
};
item.fixed = false
} else if (index !== 0) {
item.itemStyle = {};
item.fixed = true
}
return item;
}),
edges: links.map(function (item) {
if (item.target === nodeName) {
item.value = 80;
} else {
item.value = 100;
}
return item;
}),
},
],
});
});