拓扑关系图

描述:当前是关于Echarts图表中的 示例。
 
            function getTransparentColor(colorString, opacity) {
   // 将传入的颜色字符串转换成 RGB 格式
   const hexToRgb = (hex) => {
      const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
      hex = hex.replace(shorthandRegex, (m, r, g, b) => {
         return r + r + g + g + b + b;
      });
      const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
      return result ? {
         r: parseInt(result[1], 16),
         g: parseInt(result[2], 16),
         b: parseInt(result[3], 16)
      } : null;
   };

   // 将 RGB 颜色转换成带有透明度的 rgba 格式
   const rgbaColor = (color, alpha) => {
      return `rgba(${color.r}, ${color.g}, ${color.b}, ${alpha})`;
   };

   // 解析传入的颜色字符串
   const rgbColor = hexToRgb(colorString);

   // 如果颜色解析成功,则返回带有指定透明度的颜色
   if (rgbColor) {
      return rgbaColor(rgbColor, opacity);
   } else {
      // 如果颜色解析失败,则返回原始颜色字符串
      return colorString;
   }
}
const baseImg = `data:image/jpg;base64,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
AAAAAElFTkSuQmCC`

var tong = [{ qi: '[2#滚筒]', zhi: 'N#' }, { qi: '[2#滚筒]', zhi: 'W#' }, { qi: '[3#滚筒]', zhi: 'A#' }, { qi: '[4#滚筒]', zhi: 'Z#' }, { qi: '[5#滚筒]', zhi: 'F#' },
{ qi: '[6#滚筒]', zhi: 'G#' }, { qi: '[7#滚筒]', zhi: 'W#' }, { qi: '[8#滚筒]', zhi: 'G#' }, { qi: '[9#滚筒]', zhi: 'W#' }, { qi: '[10#滚筒]', zhi: 'G#' },]
//后端传过来的x轴例如A#
var phabetEds = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
let darkColors = [
   '#FF6347', // 火红色
   '#FF00FF', // 鲜粉色
   '#00CED1', // 蓝绿色
   '#0000FF', // 纯蓝色
   '#FFD700', // 金黄色
   '#32CD32', // 鲜绿色
   '#9400D3', // 暗紫色
   '#FFA500', // 橙色
   '#FF1493', // 深粉色
   '#8A2BE2', // 紫罗兰色
   '#00FF7F', // SpringGreen
   '#B22222', // 红褐色
   '#9932CC', // 深紫罗兰色
   '#20B2AA', // 浅海洋绿
   '#0000FF', // 纯蓝色
   '#FF1493', // 深粉色
   '#32CD32', // 鲜绿色
   '#9932CC', // 深紫罗兰色
   '#FFA500', // 橙色
   '#FF6347'  // 火红色
];
function getLetters(num) {
   if (num) {//获取26个字母型号
      let uppercaseAlphabet = '';
      for (let i = 65; i <= 90; i++) {
         uppercaseAlphabet += String.fromCharCode(i);
      }
      return phabetEds.length ? phabetEds : uppercaseAlphabet
   } else {//计算轴有多少个
      let arry = []
      for (let j = 0; j < tong.length; j++) {
         if (arry.findIndex(item => item == tong[j].qi) == -1) {
            arry.push(tong[j].qi)
         }
      }
      return arry.length
   }
}
var ZiMu = [], phabet = getLetters(1), yTotal = getLetters(0)
let yNums = 180, LineNode = [], links = []//顶部轴上的
let medium = 450//省的线段重合的介质
for (let j = 0; j < tong.length; j++) {
   //找有没有相同的
   let obj = ZiMu.find(item => item.name === tong[j].qi)
   if (!tong[j].color) {//有color颜色就不创建新颜色,如果没有就创建新的
      tong[j].color = darkColors[tong.findIndex(obj => obj.qi === tong[j].qi) == -1 ? j : tong.findIndex(obj => obj.qi === tong[j].qi)]
   }
   if (typeof obj != "object") {
      ZiMu.push({
         name: tong[j].qi,
         value: [yNums, 500],
         symbol: 'image://' + baseImg,
         symbolSize: [60, 40],
         itemStyle: {
            color: '#02AEFD',
            borderColor: '#02AEFD',
            // borderWidth: 3,
         },
         label: {
            show: true,
            position: 'top',
            distance: 8, // 距离图片的距离
            formatter: function (params) {
               return params.name; // 显示 name 字段
            },
            color: '#000', // 字体颜色
            fontWeight: 'bold', // 字体粗细
         }
      })
      medium = medium - 20//线路不重复
      LineNode.push({//点位
         id: `${tong[j].qi}+${medium}`,
         name: '',
         value: [yNums, medium],
         symbolSize: [0, 0]
      })
      links.push(//线路
         {
            source: tong[j].qi,
            target: `${tong[j].qi}+${medium}`,
            lineStyle: {
               color: tong[j].color,
               type: 'dashed',
               width: 2,
            },
            z: 1
         },
         {
            source: tong[j].qi,
            target: `${tong[j].qi}+${medium}`,
            lineStyle: {
               color: getTransparentColor(tong[j].color, 0.9),
               width: 10,
            },
            z: 0
         })
      yNums = yNums + 40 + 120

   }
   tong[j].y = medium
}
let nums = 60//横坐标字母间隔起始值
for (let i = 0; i < phabet.length; i++) {
   let colorOpn = true//控制A#型号的颜色
   for (let j = 0; j < tong.length; j++) {
      if ((phabet[i] + '#') === tong[j].zhi) {
         LineNode.push({//点位
            id: `${tong[j].y}+${nums}`,
            name: '',
            value: [nums, tong[j].y],
            symbolSize: [0, 0]
         })
         colorOpn = false
         links.push(//线路
            {
               source: `${tong[j].qi}+${tong[j].y}`,
               target: `${tong[j].y}+${nums}`,
               lineStyle: {
                  color: tong[j].color,
                  type: 'dashed',
                  width: 2,
               },
               z: 1
            },
            {
               source: `${tong[j].qi}+${tong[j].y}`,
               target: `${tong[j].y}+${nums}`,
               lineStyle: {
                  color: getTransparentColor(tong[j].color, 0.9),
                  width: 10,
               },
               z: 0
            },
            {
               source: `${tong[j].y}+${nums}`,
               target: phabet[i] + "#",
               lineStyle: {
                  color: tong[j].color,
                  type: 'dashed',
                  width: 2,
               },
               z: 1
            },
            {
               source: `${tong[j].y}+${nums}`,
               target: phabet[i] + "#",
               lineStyle: {
                  color: getTransparentColor(tong[j].color, 0.9),
                  width: 10,
               },
               z: 0
            },
         )
      }
   }
   ZiMu.push({
      name: phabet[i] + "#",
      value: [nums, 0],
      symbol: 'rect',
      symbolSize: [20, 20],
      itemStyle: {
         color: colorOpn ? 'rgba(65, 217, 128, 0.5)' : '#41D980', // 设置半透明的背景颜色
         borderColor: '#41D980', // 设置边框颜色
         borderWidth: 1,// 设置边框宽度
         // borderRadius: 1 // 设置圆角半径
      },
      label: {
         show: true,
         formatter: function (params) {
            return params.name; // 显示 name 字段
         },
         color: colorOpn ? '#41D980' : '#000', // 字体颜色
         // fontWeight: 'bold', // 字体粗细
      }
   })
   nums = nums + 40 + 18.5
}
data = [...ZiMu, ...LineNode];
option = {
   grid: {
      left: 30,
      right: 0
   },
   xAxis: {
      // min: 0,
      // max: chartDom.clientWidth || 1000,
      show: false,
      type: 'value',
   },
   yAxis: {
      // min: 0,
      // max: chartDom.clientHeight || 1000,
      show: false,
      type: 'value',
   },
   series: [
      {
         type: 'graph',
         coordinateSystem: 'cartesian2d',
         label: {
            show: true,
            position: 'inside', // inside
            // 文字
            color: '#fff',
            fontFamily: 'Microsoft YaHei',
            fontSize:12,
            distance: 20, // 距离元素距离
            formatter: function (item) {
               return item.data.name;
            },
         },
         data: data,
         links: links,
      },
      {
         type: 'lines',
         polyline: true,
         coordinateSystem: 'cartesian2d',
         lineStyle: {
            type: 'solid',
            width: 0,
         },
      },
   ],
};