ECharts:树形图的显示图例?
ECharts: Display Legend for Treemap?
下面的树状图有两层。我想显示顶级节点(节点 A 和节点 B)的图例。对于我使用过的其他类型的图表,图例可以自动生成,也可以明确定义。使用树状图,看起来一个不是自动生成的,如果我明确定义一个,它永远不会显示。是否可以显示树状图的图例?
<style>
#chart {
position: absolute;
border: 1px solid;
top: 100px;
left: 100px;
right: 100px;
bottom: 100px;
border: 1px solid black;
}
</style>
<div id="chart"></div>
<script src="http://echarts.baidu.com/dist/echarts.min.js"></script>
<script>
var options = {
series: [{
type: 'treemap',
data: [{
name: 'Node A',
value: 20,
children: [{
name: 'Node A1',
value: 12
}, {
name: 'Node A2',
value: 8
}]
}, {
name: 'Node B',
value: 20,
children: [{
name: 'Node B1',
value: 20
}]
}]
}]
};
var chart = echarts.init(document.getElementById("chart"));
chart.setOption(options);
</script>
ECharts的legend
对象默认是由series
对象构造而成。这意味着 treemap
系列中的嵌套数据不是图例的一部分。您需要在 series
中输入两项:一项用于 Node A
,一项用于 Node B
。
所以你可以先使用下面的代码,你会发现你 运行 陷入了 UI-related 问题。
{
legend: {
data: ['Node A', 'Node B'],
top: 55,
itemGap: 5,
backgroundColor: 'rgb(243,243,243)',
borderRadius: 5
},
series: [
{
type: 'treemap',
name: 'Node A',
data: [{
name: 'Node A1',
value: 12,
}, {
name: 'Node A2',
value: 8,
}]
}, {
type: 'treemap',
name: 'Node B',
data: [{
name: 'Node B1',
value: 20,
}]
}
]
}
此代码会运行,但图例<->图表同步将无法正常工作,因为ECharts 不支持treemap
对象的多选模式图例(这有点技术性)。目前ECharts版本基本上只能使用single-selection模式
要摆脱奇怪的 UI 问题,您要么必须删除图例(因为 name
已经描述了地图中的每个块,因此您可能不需要任何图例),或在 legend
对象中添加以下行:
selectedMode: 'single'
这将允许您有一个正常工作的图例,但这将不允许您同时显示两个系列。至少,您将能够在 series
数组中的条目之间切换。
这是官方编辑器上的演示截图:
Echarts demo
下面的树状图有两层。我想显示顶级节点(节点 A 和节点 B)的图例。对于我使用过的其他类型的图表,图例可以自动生成,也可以明确定义。使用树状图,看起来一个不是自动生成的,如果我明确定义一个,它永远不会显示。是否可以显示树状图的图例?
<style>
#chart {
position: absolute;
border: 1px solid;
top: 100px;
left: 100px;
right: 100px;
bottom: 100px;
border: 1px solid black;
}
</style>
<div id="chart"></div>
<script src="http://echarts.baidu.com/dist/echarts.min.js"></script>
<script>
var options = {
series: [{
type: 'treemap',
data: [{
name: 'Node A',
value: 20,
children: [{
name: 'Node A1',
value: 12
}, {
name: 'Node A2',
value: 8
}]
}, {
name: 'Node B',
value: 20,
children: [{
name: 'Node B1',
value: 20
}]
}]
}]
};
var chart = echarts.init(document.getElementById("chart"));
chart.setOption(options);
</script>
ECharts的legend
对象默认是由series
对象构造而成。这意味着 treemap
系列中的嵌套数据不是图例的一部分。您需要在 series
中输入两项:一项用于 Node A
,一项用于 Node B
。
所以你可以先使用下面的代码,你会发现你 运行 陷入了 UI-related 问题。
{
legend: {
data: ['Node A', 'Node B'],
top: 55,
itemGap: 5,
backgroundColor: 'rgb(243,243,243)',
borderRadius: 5
},
series: [
{
type: 'treemap',
name: 'Node A',
data: [{
name: 'Node A1',
value: 12,
}, {
name: 'Node A2',
value: 8,
}]
}, {
type: 'treemap',
name: 'Node B',
data: [{
name: 'Node B1',
value: 20,
}]
}
]
}
此代码会运行,但图例<->图表同步将无法正常工作,因为ECharts 不支持treemap
对象的多选模式图例(这有点技术性)。目前ECharts版本基本上只能使用single-selection模式
要摆脱奇怪的 UI 问题,您要么必须删除图例(因为 name
已经描述了地图中的每个块,因此您可能不需要任何图例),或在 legend
对象中添加以下行:
selectedMode: 'single'
这将允许您有一个正常工作的图例,但这将不允许您同时显示两个系列。至少,您将能够在 series
数组中的条目之间切换。
这是官方编辑器上的演示截图: Echarts demo