ToB企服应用市场:ToB评测及商务社交产业平台

标题: echarts实现3d柱状效果 [打印本页]

作者: 小小小幸运    时间: 2024-7-23 15:14
标题: echarts实现3d柱状效果


代码如下,单个的调第一个方法,多个柱状的调第二个方法,详细情况修改参数大概二次开发即可
  1. //3d柱状图
  2. export function getEcharts3DBar (xAxisData:string[]=['name1','name2','name3'], data:number[]=[1,2,3], colorObj:IBaseObject={
  3.   topStartColor:'rgba(236, 191, 55)',
  4.   topEndColor:'rgba(236, 191, 55)',
  5.   startColor:'rgba(71, 57, 30)',
  6.   endColor:'rgba(236, 191, 55)',
  7.   bottomStartColor:'rgba(236, 191, 55)',
  8.   bottomEndColor:'rgba(236, 191, 55)'
  9. }) {
  10.   return {
  11.     tooltip: {
  12.       trigger: "axis",
  13.       axisPointer: {
  14.         type: 'shadow'
  15.       },
  16.       backgroundColor:'rgba(255,255,255,.1)',
  17.       borderColor:'rgba(40, 60, 74)',
  18.       textStyle:{
  19.         align:'left',
  20.         fontSize: 10,//字体大小
  21.         color:'#fff',
  22.       },
  23.       formatter: function (params) {
  24.         var str = params[0].axisValue + ":" +params[0].value;
  25.         return str;
  26.       },
  27.     },
  28.     grid: {
  29.       left: "3%", //图表距边框的距离
  30.       right: "3%",
  31.       top: "15%",
  32.       bottom: "5%",
  33.       containLabel: true,
  34.     },
  35.     xAxis: {
  36.       data: xAxisData,
  37.       axisTick: {
  38.         show: false,
  39.       },
  40.       axisLabel: {
  41.         color: '#cae2ee' // 设置Y轴文字颜色为蓝色
  42.       }
  43.     },
  44.     yAxis: {
  45.       type: 'value',
  46.       splitLine: {
  47.         show: 'ture', // 是否显示y轴分割线
  48.         interval: 'auto', // 坐标轴分隔线的显示间隔
  49.         lineStyle: {
  50.           color: ['rgba(232,236,239,.2)'], // 分隔线颜色。
  51.           width: 1, // 分隔线线宽
  52.           type: 'dashed', // 线的类型
  53.           opacity: 1 // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
  54.         }
  55.       },
  56.       axisLabel: {
  57.         color: '#cae2ee' // 设置Y轴文字颜色为蓝色
  58.       }
  59.     },
  60.     series: [
  61.       // 数据低下的圆片
  62.       {
  63.         name: '',
  64.         type: 'pictorialBar',
  65.         symbol: 'diamond',
  66.         symbolSize: [16,10], // 宽,高
  67.         symbolOffset:[0,2],// 左 上
  68.         symbolPosition: 'start',
  69.         z: 0,
  70.         itemStyle: {
  71.           color: () => {
  72.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  73.               { offset: 0, color: colorObj.bottomStartColor },
  74.               { offset: 1, color: colorObj.bottomEndColor }
  75.             ]);
  76.           }
  77.         },
  78.         data: data
  79.       },
  80.       // 数据的柱状图
  81.       {
  82.         name: '',
  83.         type: 'bar',
  84.         barWidth: 8, // 柱条的宽度,不设时自适应。
  85.         showSymbol: false,
  86.         hoverAnimation: false,
  87.         data: data,
  88.         itemStyle: {
  89.           // normal: {
  90.           color: () => {
  91.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  92.               { offset: 0, color: colorObj.startColor },
  93.               { offset: 1, color: colorObj.endColor }
  94.             ]);
  95.           },
  96.           borderRadius:[1,0,0,100],
  97.           // }
  98.         },
  99.       },
  100.       {
  101.         name: '',
  102.         type: 'bar',
  103.         barWidth: 8, // 柱条的宽度,不设时自适应。
  104.         barGap: '0', // 不同系列的柱间距离
  105.         data: data,
  106.         itemStyle: {
  107.           color: () => {
  108.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  109.               { offset: 0, color: colorObj.startColor },
  110.               { offset: 1, color: colorObj.endColor }
  111.             ]);
  112.           },
  113.           borderWidth: 0.1,
  114.           borderColor:'#B0E1FF',
  115.           borderRadius:[0,2,100,0]
  116.         },
  117.       },
  118.       // 数据顶部的样式
  119.       {
  120.         name: '',
  121.         type: 'pictorialBar',
  122.         symbol: 'diamond',
  123.         symbolSize: [16,9],
  124.         symbolOffset:[0,-4],
  125.         symbolPosition: 'end',
  126.         z: 3,
  127.         itemStyle: {
  128.           color: () => {
  129.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  130.               { offset: 0, color: colorObj.topStartColor },
  131.               { offset: 1, color: colorObj.topEndColor }
  132.             ]);
  133.           },
  134.           label: {
  135.             show: true, // 开启显示
  136.             position: 'top', // 在上方显示
  137.             textStyle: {
  138.               fontSize: '12',
  139.               color: '#B0E1FF'
  140.             },
  141.             offset:[0,-2]
  142.           }
  143.         },
  144.         data: data
  145.       },
  146.     ]
  147.   };
  148. }
  149. export function getEcharts3DBar1 (obj) {
  150.   //obj的格式
  151.   /*obj:{
  152.     xAxisData: ['2024-07-12','2024-07-13','2024-07-14'],
  153.       data:{
  154.       data1:{//劳务人员
  155.         name:'劳务人员',
  156.           offset:[-8,-2],
  157.           colorObj: {
  158.           topStartColor:'rgba(236, 191, 55)',
  159.             topEndColor:'rgba(236, 191, 55)',
  160.             startColor:'rgba(71, 57, 30)',
  161.             endColor:'rgba(236, 191, 55)',
  162.             bottomStartColor:'rgba(236, 191, 55)',
  163.             bottomEndColor:'rgba(236, 191, 55)'
  164.         },
  165.         data:[0,0,0],
  166.       },
  167.       data2:{//岗位人员
  168.         name:'岗位人员',
  169.           offset:[8,-2],
  170.           colorObj: {
  171.           topStartColor:'rgba(21, 205, 217)',
  172.             topEndColor:'rgba(10, 72, 140)',
  173.             startColor:'rgba(10, 72, 140)',
  174.             endColor:'rgba(53, 152, 212)',
  175.             bottomStartColor:'rgba(53, 152, 212)',
  176.             bottomEndColor:'rgba(53, 152, 212)'
  177.         },
  178.         data:[0,0,0],
  179.       },
  180.     }
  181.   }*/
  182.   let series = [],legendData=[],
  183.     circle1=`width: 10px;height: 10px;display: inline-block;border-radius: 50%;margin-right:5px;background:${obj.data.data1.colorObj.startColor}`,
  184.     circle2=`width: 10px;height: 10px;display: inline-block;border-radius: 50%;margin-right:5px;background:${obj.data.data2.colorObj.startColor}`
  185.   for(let key in obj.data){
  186.     legendData.push({
  187.       name: obj.data[key].name,
  188.       icon: 'roundRect',
  189.       itemStyle: {
  190.         color: obj.data[key].colorObj.startColor
  191.       }
  192.     })
  193.     series.push( // 数据底部的圆片
  194.       {
  195.         name: obj.data[key].name,
  196.         type: 'pictorialBar',
  197.         symbol: 'diamond',
  198.         symbolSize: [16,10], // 宽,高
  199.         symbolOffset:obj.data[key].offset,// 左 上
  200.         symbolPosition: 'start',
  201.         z: 0,
  202.         itemStyle: {
  203.           color: (val) => {
  204.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  205.               { offset: 0, color: val.data?obj.data[key].colorObj.bottomStartColor:'transparent' },
  206.               { offset: 1, color: val.data?obj.data[key].colorObj.bottomEndColor:'transparent' }
  207.             ]);
  208.           }
  209.         },
  210.         data: obj.data[key].data
  211.       },
  212.       // 数据的柱状图
  213.       {
  214.         name: obj.data[key].name,
  215.         type: 'bar',
  216.         barWidth: 8, // 柱条的宽度,不设时自适应。
  217.         showSymbol: false,
  218.         hoverAnimation: false,
  219.         symbolOffset:obj.data[key].offset,// 左 上
  220.         data: obj.data[key].data,
  221.         itemStyle: {
  222.           color: (val) => {
  223.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  224.               { offset: 0, color:val.data?obj.data[key].colorObj.startColor:'transparent' },
  225.               { offset: 1, color:val.data?obj.data[key].colorObj.endColor:'transparent' }
  226.             ]);
  227.           },
  228.           // borderRadius:[1,0,0,100],
  229.         },
  230.       },
  231.       {
  232.         name: obj.data[key].name,
  233.         type: 'bar',
  234.         barWidth: 8, // 柱条的宽度,不设时自适应。
  235.         symbolOffset:obj.data[key].offset,// 左 上
  236.         barGap: '0', // 不同系列的柱间距离
  237.         data: obj.data[key].data,
  238.         itemStyle: {
  239.           color: (val) => {
  240.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  241.               { offset: 0, color: val.data?obj.data[key].colorObj.startColor:'transparent' },
  242.               { offset: 1, color: val.data?obj.data[key].colorObj.endColor:'transparent' }
  243.             ]);
  244.           },
  245.           borderWidth: 0.1,
  246.           borderColor:'#B0E1FF',
  247.           // barBorderRadius:[0,2,100,0]
  248.         },
  249.       },
  250.       // 数据顶部的样式
  251.       {
  252.         name: obj.data[key].name,
  253.         type: 'pictorialBar',
  254.         symbol: 'diamond',
  255.         symbolSize: [16,9],
  256.         symbolOffset:obj.data[key].offset,// 左 上
  257.         symbolPosition: 'end',
  258.         z: 3,
  259.         itemStyle: {
  260.           color: (val) => {
  261.             return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  262.               { offset: 0, color: val.data?obj.data[key].colorObj.topStartColor:'transparent' },
  263.               { offset: 1, color: val.data?obj.data[key].colorObj.topEndColor:'transparent' }
  264.             ]);
  265.           },
  266.           label: {
  267.             show: true, // 开启显示
  268.             position: 'top', // 在上方显示
  269.             textStyle: {
  270.               fontSize: '12',
  271.               color: '#B0E1FF'
  272.             },
  273.             offset:[0,-2]
  274.           }
  275.         },
  276.         data: obj.data[key].data
  277.       },
  278.     )
  279.   }
  280.   return {
  281.     tooltip: {
  282.       trigger: 'axis',
  283.       axisPointer: {
  284.         type: 'shadow'
  285.       },
  286.       backgroundColor:'rgba(255,255,255,.1)',
  287.       borderColor:'rgba(40, 60, 74)',
  288.       textStyle:{
  289.         align:'left',
  290.         fontSize: 10,//字体大小
  291.         color:'#fff',
  292.       },
  293.       formatter: function (params) {
  294.         var str = "<div>"+params[0].axisValue+"</div>";
  295.         str += "<br/>" + "<div>" + `<span style='${circle1}' >` + "</span>" + params[0].seriesName + ":" +params[0].value+"</div>";
  296.         str += "<br/>" + "<div>"+ `<span style='${circle2}' >` + "</span>" + params[5].seriesName + ":" + params[5].value+"</div>";
  297.         return str;
  298.       },
  299.     },
  300.     grid: {
  301.       left: "3%", //图表距边框的距离
  302.       right: "3%",
  303.       top: "15%",
  304.       bottom: "5%",
  305.       containLabel: true,
  306.     },
  307.     xAxis: {
  308.       data: obj.xAxisData,
  309.       axisTick: {
  310.         show: false,
  311.       },
  312.       axisLabel: {
  313.         color: '#cae2ee' // 设置Y轴文字颜色为蓝色
  314.       }
  315.     },
  316.     yAxis: {
  317.       type: 'value',
  318.       splitLine: {
  319.         show: 'ture', // 是否显示y轴分割线
  320.         interval: 'auto', // 坐标轴分隔线的显示间隔
  321.         lineStyle: {
  322.           color: ['rgba(232,236,239,.2)'], // 分隔线颜色。
  323.           width: 1, // 分隔线线宽
  324.           type: 'dashed', // 线的类型
  325.           opacity: 1 // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
  326.         }
  327.       },
  328.       axisLabel: {
  329.         color: '#cae2ee' // 设置Y轴文字颜色为蓝色
  330.       }
  331.     },
  332.     legend:{
  333.       y: 'top',
  334.       icon:'rectangle',
  335.       itemStyle:{
  336.         // color:[colorObj.topStartColor,colorObj1.topStartColor]
  337.       },
  338.       textStyle:{
  339.         color:'#fff'
  340.       },
  341.       data:legendData,
  342.     },
  343.     series:series
  344.   };
  345. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4