3D柱状图
配置项如下
let chartData = {
xData: ['微信公众号', '微信小程序', '容器镜像', '微服务微应用', '信息系统', '数据产品', '移动APP'],
data: [212, 305, 260, 283, 20, 555, 125, 142],
percent: ['22%', '35%', '35%', '35%', '35%', '35%', '35%', '35%'],
max: 1902,
color: ['#01DA99', '#00A7C0', '#0E468F', '#62AFE1', '#D66B30', '#D5AC52', '#D6C7A8'],
color2: ['#01CD91', '#009AB0', '#0D3F82', '#5BAADF', '#CC6228', '#CF9E38', '#CEBC97'],
};
let effectScatterData = [];
let bottomBarData = [];
let topData = [];
let middleData = [];
let bgData = [];
for (let i = 0; i < chartData.xData.length; i++) {
//底部
effectScatterData.push({
name: '',
value: '0',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: chartData.color[i],
},
{
offset: 1,
color: chartData.color2[i],
},
]),
},
},
});
//下半截柱状图
bottomBarData.push({
name: '',
value: chartData.data[i],
itemStyle: {
normal: {
color: {
x: 0,
x2: 1,
y: 0,
y2: 0,
type: 'linear',
global: false,
colorStops: [
{ offset: 0, color: chartData.color[i] },
{ offset: 0.5, color: chartData.color[i] },
{ offset: 0.5, color: chartData.color2[i] },
{ offset: 1, color: chartData.color2[i] },
],
},
},
},
});
//下半部的顶
middleData.push({
name: '',
value: chartData.data[i],
symbolPosition: 'end',
label: {
formatter: '{c}',
color: '#fff',
offset: [0, -5],
show: true,
position: 'top',
fontSize: 10,
fontWeight: 400,
fontFamily: 'zcool-gdh',
},
itemStyle: {
color: chartData.color[i],
},
});
//头顶
topData.push({
name: '',
value: chartData.max,
symbolPosition: 'end',
label: {
formatter: chartData.percent[i],
color: '#000',
offset: [0, -5],
show: true,
position: 'top',
fontSize: 10,
fontWeight: 400,
fontFamily: 'zcool-gdh',
},
itemStyle: {
color: '#F4F4F4',
},
});
// 背景
bgData.push({
name: '',
value: chartData.max - chartData.data[i],
symbolPosition: 'end',
itemStyle: {
normal: {
color: {
x: 0,
x2: 1,
y: 0,
y2: 0,
type: 'linear',
global: false,
colorStops: [
{ offset: 0, color: '#dadada33' },
{ offset: 0.5, color: '#dadada33' },
{ offset: 0.5, color: '#dadada26' },
{ offset: 1, color: '#dadada26' },
],
},
},
},
});
}
option = {
grid: {
top: '2%',
left: '2%',
right: '2%',
bottom: '10%',
},
xAxis: {
offset: 20,
data: chartData.xData,
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
textStyle: {
color: '#A5C8E6',
fontSize: 12,
},
},
},
yAxis: {
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
},
series: [
//'最低下,
{
name: '最低下的圆片',
stack: 'a',
// type: 'pictorialBar',
// symbolSize: [66, 12],
// symbolOffset: [0, 6],
type: 'effectScatter',
symbol: 'diamond',
symbolSize: [20, 12],
symbolOffset: [0, 0],
z: 22,
data: effectScatterData,
},
//下半截柱状图
{
name: '下半截柱状图',
stack: 'a',
type: 'bar',
barWidth: 20,
z: 2,
barGap: '-100%',
data: bottomBarData,
},
//替代柱状图 默认不显示颜色
{
name: '替代柱状图',
type: 'bar',
barWidth: 20,
barGap: '-100%',
stack: 'b',
itemStyle: {
color: 'transparent',
},
data: chartData.data,
},
//下半部的顶
{
name: '头部1',
stack: 'a',
type: 'pictorialBar',
symbolSize: [20, 12],
symbol: 'diamond',
symbolOffset: [0, -6],
z: 22,
data: middleData,
},
//顶部
{
name: '头部2',
stack: 'a',
type: 'pictorialBar',
symbol: 'diamond',
symbolSize: [20, 12],
symbolOffset: [0, -6],
z: 22,
data: topData,
},
//底色
{
name: '底色',
type: 'bar',
barWidth: 20,
z: 2,
barGap: '-100%',
stack: 'b',
data: bgData,
},
],
};