我不是專業的前端開發,項目中需要用到,但是有點不符合需求,不過既然做了個效果,那就發出來,給有用的人用吧。
效果如下圖所示:

代碼如下:
function GetPolygon(side) {
//參數說明:side是六邊形邊長
let polygonP = [];//六邊形六個頂點的列表,代表六邊形
//let side = Math.sqrt(area / (3 * sqrt_3 / 2));//六邊形邊長
let midwid=Math.sqrt(3)/2*side //六邊形高度的一半
let midx=side/2 //橫向坐標 第一個點與原點的距離
//left top
let x = 0;//頂點x坐標 調整顯示位置
let y = 0;//頂點y坐標 調整顯示位置
//
polygonP.push([x+midx,y+midwid*2]);
polygonP.push([x+0,y+midwid]);
polygonP.push([x+midx,y+0]);
polygonP.push([x+midx+side,y+0]);
polygonP.push([x+midx*2+side,y+midwid]);
polygonP.push([x+midx+side,y+midwid*2]);
polygonP.push([x+midx,y+midwid*2]);
return polygonP;
};
option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['bar', 'error']
},
dataZoom: [
{
type: 'slider',
filterMode: 'none'
},
{
type: 'inside',
filterMode: 'none'
}
],
xAxis: {},
yAxis: {},
series: [
{
type: 'custom',
renderItem: function (params, api) {
if (params.context.rendered) {
return;
}
params.context.rendered = true;
let points = [];
let mydata=GetPolygon(100)
for (let i = 0; i < mydata.length; i++) {
points.push(api.coord(mydata[i]));
}
let color = api.visual('color');
return {
type: 'polygon',
transition: ['shape'],
shape: {
points:points
},
style: api.style({
fill: color,
stroke: echarts.color.lift(color, 0.1)
})
};
},
clip: true,
data: GetPolygon(100)
},
]
};
