【发布时间】:2021-06-24 07:54:19
【问题描述】:
TLDR
在下图中,一些条出现翻转,有没有办法让所有条都显示为“正常”?
简介
我正在制作一个可以有多个系列和多个 y 值的 echarts 条形图。每个条的值可以是正数也可以是负数,有没有办法根据每个值改变边框半径?
我尝试了什么
如果没有正值(忽略0),那么我只使用[0, 0, 10, 10] 而不是[10, 10, 0, 0] 作为barBorderRadius 属性。但这只有在只有 1 y 值时才能保证有效。
在下面的示例中,红色 b 条显示为“倒置”,但绿色 b 显示为应有的样子,因为绿色 a 没有值。
小例子
var dom = document.querySelector("#chart");
var data = {
"red": {
A: 400,
B: -200
},
"green": {
A: 0,
B: -100
},
"blue": {
A: 200,
B: 0
}
};
var colors = Object.keys(data);
var types = Object.keys(data[colors[0]]);
var myChart = echarts.init(dom);
myChart.setOption({
color: colors,
xAxis: [{
type: "category",
data: types
}],
yAxis: [{
type: "value"
}],
series: colors.map(function(key) {
var dataSet = Object.values(data[key]);
var hasPositive = dataSet.filter(Boolean).some(function(val) {
return val > 0;
});
return {
name: key,
type: "bar",
itemStyle: {
normal: {
barBorderRadius: hasPositive ? [10, 10, 0, 0] : [0, 0, 10, 10]
}
},
data: dataSet
};
})
});
#chart {
margin-top: -50px;
height: 280px;
width: 400px;
}
<script src="https://lib.baomitu.com/echarts/4.5.0/echarts-en.common.js"></script>
<div id="chart"></div>
【问题讨论】:
标签: javascript echarts