【发布时间】:2018-03-05 15:57:38
【问题描述】:
我用Baidu ECharts 创建了一个垂直的stacked bar chart。
是否可以在栈顶显示所有值的sum?
编辑: 我已经使用@jeffrey 的(很好解释的)答案编辑了我的示例,但我得到 Uncaught TypeError: Cannot read property 'forEach' of undefined 错误。我在这里做错了什么?
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script type="text/javascript" src="echarts-en.min.js"></script>
<script type="text/javascript">
var mySeries = [
{
name: 'Department 1',
type: 'bar',
stack: 'stack1',
data: [320, 302, 301, 334, 390, 330, 320]
},
{
name: 'Department 2',
type: 'bar',
stack: 'stack1',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Department 3',
type: 'bar',
stack: 'stack1',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Department 4',
type: 'bar',
stack: 'stack1',
data: [150, 212, 201, 154, 190, 330, 410]
},
{
name: 'Department 5',
type: 'bar',
stack: 'stack1',
data: [185, 120, 55, 66, 77, 88, 40],
label: {
normal: {
show: true,
position: 'top',
formatter: (params) => {
let total = 0;
this.series.forEach(serie => {
total += serie.data[params.dataIndex];
})
return total;
}
}
}
}
];
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var option = null;
option = {
tooltip : {
trigger: 'axis',
axisPointer : {
type : 'shadow'
}
},
legend: {
data: ['Department 1', 'Department 2','Department 3','Department 4','Department 5'],
},
toolbox: {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
dataView: {show: false, readOnly: false},
magicType: {show: true, type: ['line', 'bar', 'stack', 'tiled']},
restore: {show: true},
saveAsImage: {show: true}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
yAxis: {
type: 'value'
},
xAxis: {
type: 'category',
data: ["Jen\n2018", "Feb\n2018", "Mar\n2018", "Apr\n2018", "May\n2018", "Jun\n2018", "Jul\n2018"]
}
};;
myChart.setOption(option, true);
myChart.setOption({
series: mySeries
})
</script>
</body>
</html>
【问题讨论】:
-
您收到错误,因为您创建了
var mySeries,但在格式化程序中,您使用this.mySeries引用它,因此它是undefined。 -
@Jeffrey :即使我将其定义为
this.mySeries,它也不起作用。我做了一个 jsfiddle 在这里测试它:link -
我检查了,我犯了一个错误(对不起!)。 forEach 应该是
this.mySeries.forEach()。 Now your fiddle works :) -
是的!谢谢@Jeffrey 的解决方案!很抱歉,我认为我无法将此解决方案标记为 OK,因为我的声誉少于 15 :-(
-
@fkossyvas 接受答案没有信誉阈值。询问后您需要等待 15 分钟,仅此而已。见How does accepting an answer work?
标签: javascript echarts baidu