echarts个性柱状图

样式展示:
在这里插入图片描述
示例代码:

html:

<div id="charts" class="main_container"></div>

js

//初始化方法
    getOption(c, d, e, f) {
      var QYThingChart = this.$echarts.init(
        document.getElementById("charts")
      );
      QYThingChart.setOption({
        tooltip: {
          trigger: "axis",
          axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: "shadow", // 默认为直线,'line' | 'shadow'
          },
          formatter(params) {
            return `${params[0].seriesName}${params[0].value}<br/>${params[1].seriesName}${params[1].value}<br/>${params[2].seriesName}${params[2].value}`;
          },
        },
        legend: {
          data: ["xxx", "xxx", "xxx"],//使用时请替换xxx为自己的实际数据
          icon: "horizontal",
          itemWidth: 20,
          itemHeight: 5,
          top: "5%",
          textStyle: {
            //图例文字样式
            color: "#8F93A2",
            fontSize: 18,
          },
        },
        grid: {
          left: "3%",
          right: "4%",
          bottom: "3%",
          containLabel: true,
        },
        xAxis: {
          type: "category",
          data: ["周一", "周二", "周三", "周四", "周五"],
          axisTick: {
            show: false, // 设置x轴的刻度线
          },
          axisLine: {
            lineStyle: {
              color: "#3B537A",
            },
          },
          axisLabel: {
            textStyle: {
              color: "#8F93A2", // 设置字体颜色
              fontSize: 22,
            },
          },
        },
        yAxis: {
          type: "value",
          axisTick: {
            show: false, //坐标轴刻度线
          },
          axisLine: {
            show: false, // 坐标轴线
          },
          splitLine: {
            show: true,
            lineStyle: {
              type: "dashed", // 虚线类型
              color: "#273E63",
            },
          },
          axisLabel: {
            textStyle: {
              color: "#8F93A2", // 字体颜色
              fontSize: 22,
            },
          },
        },
        series: [
          {
            name: "xxx", //使用时请替换数据名称
            type: "bar",
            stack: "总量",
            barWidth: 30,
            itemStyle: {
              normal: {
                color: "#159AFF",
              },
            },
            label: {
              normal: {
                show: false,
                position: "insideRight",
              },
            },
            data: c,
          },
          {
            name: "xxx",//使用时请替换数据名称
            type: "bar",
            stack: "总量",
            barWidth: 30,
            itemStyle: {
              normal: {
                color: "#15FFF6",
              },
            },
            label: {
              normal: {
                show: false,
                position: "insideRight",
              },
            },
            data: d,
          },
          {
            name: "xxx",//使用时请替换数据名称
            type: "bar",
            stack: "总量",
            barWidth: 30,
            itemStyle: {
              normal: {
                color: "#EECB5F",
              },
            },
            label: {
              normal: {
                show: false,
                position: "insideRight",
              },
            },
            data: e,
          },
          {
            // 分隔
            type: "pictorialBar",
            itemStyle: {
              normal: {
                color: "#0B285D",
              },
            },
            symbolRepeat: "fixed",
            symbolMargin: 5,
            symbol: "rect",
            symbolClip: true,
            symbolSize: [30, 2],
            symbolPosition: "start",
            symbolOffset: [0, 1],
            data: f,
            width: 1,
            z: 10,
            zlevel: 1,
          },
        ],
      });
      this.echartResize(charts);//自适应窗口方法
    },
    echartResize(e){
    	window.addEventListener("resize", function () {
        	e.resize();
      	});
    },
//调用接口获取数据
getData(){
//c,d,e,f为模拟数据,根据接口返回数据结构可以重写逻辑
	  let c = [320, 302, 301, 334, 390];
      let d = [120, 132, 101, 134, 90];
      let e = [220, 182, 191, 234, 290];
      let f = [];//f为横线样式,f的数组是为了显示高度,为各组数据之和
      c.map((it, index) => {
        f.push(Number(it) + Number(d[index]) + Number(e[index]));
      });
      this.getCompanyThings(c, d, e, f);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是一个由百度开源的基于 JavaScript 的数据可视化库,广泛应用于前端数据分析图表展示。它支持多种类型的图表绘制,如折线图、柱状图、饼图等,并且功能非常丰富,可以高度自定义。 当你想要在一个 ECharts 饼图上同时显示环形柱状图的时候,实际上是在描述一种混合了 ECharts 中两种不同类型图表的视觉效果。这种混合图表通常通过创建多个 `series` 来实现,每个 `series` 对应不同的图表类型并配置相应的样式,最终在同一个容器内渲染出所需的复合图形。 下面是一个基本步骤来演示如何在 ECharts 的饼图基础上添加环形柱状图元素: ### 步骤 1: 准备 JSON 数据 假设我们有以下的数据结构: ```json { "name": "饼图与环形柱状图", "type": "pie", "data": [ { "value": 10 }, { "value": 30 }, { "value": 50 } ], // 环形柱状图部分 "series": [ { "type": "bar", "xAxisIndex": 1, "yAxisIndex": 1, "symbolSize": [4, 8], "emphasis": { "focus": "series" }, "data": [ { "value": 60 }, { "value": 80 }, { "value": 120 } ] } ] } ``` ### 步骤 2: 使用 ECharts 初始化并渲染 你需要引入 ECharts 的 JavaScript 文件以及其 CSS 文件到HTML页面中,然后初始化ECharts实例,并传入上述JSON数据: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ECharts Example</title> <!-- 引入 ECharts --> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.0/echarts.min.js"></script> <style> #main { width: 600px; height: 400px; } </style> </head> <body> <div id="main"></div> <script> var myChart = echarts.init(document.getElementById('main')); var option = { title: { text: '饼图与环形柱状图示例' }, tooltip: {}, legend: { data: ['饼图', '环形柱状图'] }, series: [ { type: 'pie', radius: ['50%', '70%'], label: { normal: { position: 'inner' } }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold' } }, data: [ { value: 10, name: 'A' }, { value: 30, name: 'B' }, { value: 50, name: 'C' } ] }, // 环形柱状图部分 { type: 'bar', xaxisIndex: 1, yaxisIndex: 1, symbolSize: function (val) { return val * 1.5 + 5; // 自定义函数生成动态大小 }, barCategoryGap: '8%', barMaxWidth: 20, data: [ { value: 60 }, { value: 80 }, { value: 120 } ] } ] }; myChart.setOption(option); </script> </body> </html> ``` ### 相关问题: 1. **如何调整图表颜色和样式?** - 您可以在 `option` 对象中自定义系列的颜色、边框、填充等属性,如 `.color`, `.borderColor`, `.backgroundColor`。 2. **如何增加图表间的交互性?** - ECharts 支持丰富的交互操作,例如鼠标悬停事件、点击事件、缩放和平移等,您可以通过设置 `tooltip`, `legend` 和 `interaction` 对象中的属性来自定义交互行为。 3. **如何适配不同设备和屏幕尺寸?** - ECharts 默认会根据浏览器窗口大小自适应渲染,您还可以通过设置 `responsiveOptions` 或修改CSS样式来进一步优化跨屏体验。 通过以上步骤和相关问题的回答,你可以更好地理解和实现 ECharts 在饼图上叠加显示环形柱状图的功能,以及如何对其进行个性化定制和交互优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值