const colors = ['#f5222d', '#FF33CC', '#fa8c16', '#a0d911', '#1890ff', '#2f54eb', '#fadb14']
let barData = [280, 162, 223, 270, 180, 340, 352];
data = barData.map((it, i) => {
const dataURL = getCanvasImgColorUrl(colors[i])
const PatternImgA = new Image()
PatternImgA.src = dataURL
return { // 处理每一个柱子 是否加边框
value: it,
itemStyle: {
color: {
image: PatternImgA,
repeat: 'repeat'
},
barBorderColor: colors[i],
barBorderWidth: 1,
barBorderRadius: 0,
borderType: 'solid'
}
}
})
option = {
toolbox: {
show: true,
feature: {
dataView: {show:true},
saveAsImage: {
//excludeComponents :['toolbox'],
pixelRatio: 5
}
}
},
xAxis: {
data: ['江北区', '渝中区', '渝北区', '沙坪坝区', '南岸区', '巴南区', '九龙坡区'],
axisLabel: {
margin: 14,
fontSize: 15,
color: "#333"
},
},
yAxis: {
axisTick: {
show: true
},
axisLine: {
formatter: '{value}-100',
show:true
},
axisLabel: {
margin: 14,
fontSize: 12,
color: "#333"
},
},
series: [{
type: 'bar',
barWidth: '50%',
data: data,
markPoint: {
label:{
show:true
},
itemStyle:{
color:'#FF9999'
},
data: [
{name: "江北区", value: 9},
{ type: 'max', name: '最大值' },
{ type: 'min', name: '最小值' }] },
markLine: { data: [{ type: 'average', name: '平均值' }] }
},
{
data: [280, 162, 223, 270, 180, 340, 352],
type: 'line',
smooth: true,
name: '折线图',
symbol: 'none',
showSymbol: false,
itemStyle: {
normal: {
borderWidth: 3,
//4个参数用于配置渐变色的起止位置, 这4个参数依次对应右/下/左/上四个方位
color: new echarts.graphic.LinearGradient(
1,
0,
0,
0,
[{
offset: 0,
color: '#F9027E'
},
{
offset: 0.5,
color: '#F9027A'
},
{
offset: 1,
color: '#744DFE'
}
]
)
}
},
lineStyle: {
width: 5,
shadowColor: 'rgba(0, 0, 0, 0.3)',
shadowOffsetY: 10,
shadowBlur: 10
},
},]
};
function getCanvasImgColorUrl(color) {
const lineBlock = document.createElement('canvas')
const cxt = lineBlock.getContext('2d')
lineBlock.width = 50
lineBlock.height = 50
cxt.beginPath()
cxt.moveTo(95, 0)
cxt.lineTo(0, 95)
cxt.moveTo(90, 0)
cxt.lineTo(0, 90)
cxt.moveTo(85, 0)
cxt.lineTo(0, 85)
cxt.moveTo(80, 0)
cxt.lineTo(0, 80)
cxt.moveTo(75, 0)
cxt.lineTo(0, 75)
cxt.moveTo(70, 0)
cxt.lineTo(0, 70)
cxt.moveTo(65, 0)
cxt.lineTo(0, 65)
cxt.moveTo(60, 0)
cxt.lineTo(0, 60)
cxt.moveTo(55, 0)
cxt.lineTo(0, 55)
cxt.moveTo(50, 0)
cxt.lineTo(0, 50)
cxt.moveTo(45, 0)
cxt.lineTo(0, 45)
cxt.moveTo(40, 0)
cxt.lineTo(0, 40)
cxt.moveTo(35, 0)
cxt.lineTo(0, 35)
cxt.moveTo(30, 0)
cxt.lineTo(0, 30)
cxt.moveTo(25, 0)
cxt.lineTo(0, 25)
cxt.moveTo(20, 0)
cxt.lineTo(0, 20)
cxt.moveTo(15, 0)
cxt.lineTo(0, 15)
cxt.moveTo(10, 0)
cxt.lineTo(0, 10)
cxt.moveTo(5, 0)
cxt.lineTo(0, 5)
cxt.strokeStyle = color
cxt.stroke();
cxt.fillStyle = 'rgba(255,255,255,0)'
cxt.fillRect(0, 0, 100, 100)
const dataURL = lineBlock.toDataURL('image/png', 1)
return dataURL
}