echarts常见图形-饼状图(四)

6 篇文章 0 订阅
6 篇文章 0 订阅

1.最终效果图

在这里插入图片描述

2.echarts文件(jylxfx.js)

export const jylxfxOption = sData => {
  //   let sData = [
  //     {
  //       name: "种植业",
  //       value: 456
  //     },
  //     {
  //       name: "养殖业",
  //       value: 231
  //     },
  //     {
  //       name: "畜牧业",
  //       value: 231
  //     },
  //     {
  //       name: "渔业",
  //       value: 134
  //     },
  //     {
  //       name: "种养结合",
  //       value: 421
  //     },
  //     {
  //       name: "林业",
  //       value: 123
  //     },
  //     {
  //       name: "其他",
  //       value: 532
  //     }
  //   ];
  let legendData = [];
  sData.map(item => {
    legendData.push(item.name);
  });
  let option = {
    textStyle: {
      fontFamily: "BebasNeue"
    },
    color: ["#2970ff", "#774dff", "#ffc000", "#00ddff", "#71f974", "#ffe79a", "#00ddff"],
    grid: {
      left: "center",
      top: "top"
    },
    tooltip: {
      show: false,
      trigger: "item",
      formatter: "{b}<br/> {c}  ({d}%)"
    },
    legend: {
      type: "scroll", //分页类型
      orient: "vertical",
      left: "65%",
      top: "middle",
      textStyle: {
        color: "#59C9F9"
        // fontSize: 25
      },
      icon: "roundRect",
      itemWidth: 8,
      itemHeight: 10,
      data: legendData
    },
    series: [
      // 主要展示层的
      {
        radius: ["40", "48"],
        center: ["35%", "50%"],
        type: "pie",
        avoidLabelOverlap: false,
        // hoverAnimation: false,
        label: {
          position: "center",
          // formatter: "{b}:{d}%",
          show: false,
          formatter(params) {
            // return "{value|" + params.value + "} \n{name|" + params.data.name + "}";//展示具体值
            return "{value|" + params.percent + "}%\n{name|" + params.data.name + "}"; //展示百分比
          },
          rich: {
            name: {
              color: "#7DA7C0",
              fontSize: 10
            },
            value: {
              fontSize: 18,
              padding: [0, 5, 0, 0],
              fontWeight: "bold",
              lineHeight: 30
            }
          }
        },
        hoverOffset: 2,
        // selectedOffset: 2,
        itemStyle: {
          borderWidth: 2,
          borderColor: "#10243C"
        },
        emphasis: {
          label: {
            show: true,
            fontSize: "18",
            fontWeight: "bold"
          },
          itemStyle: {
            // color: "red",
            // borderColor: "black",
            // borderWidth: 15
          }
        },
        labelLine: {
          normal: {
            show: true,
            length: 30,
            length2: 55
          },
          emphasis: {
            show: true
          }
        },
        data: sData
      },
      {
        name: "外边框",
        type: "pie",
        clockWise: false, //顺时加载
        hoverAnimation: false, //鼠标移入变大
        center: ["35%", "50%"],
        radius: ["52", "52"],
        label: {
          normal: {
            show: false
          }
        },
        tooltip: {
          show: false
        },
        data: [
          {
            value: 1,
            name: "",
            itemStyle: {
              normal: {
                borderWidth: 0.5,
                borderColor: "#0b5263"
              }
            }
          }
        ]
      }
    ]
  };
  return option;
};

3.vue文件中

3.1 html

<div style="width:30vh;height:30vh;" ref="jylxfxChart"></div>

3.2 js逻辑处理(引入jylxfx.js)

<script>
	import { ndfxOption } from "@/assets/js/xxjyzt/ndfx"; //年度分析
	export default {
		data(){},
		methods: {
			// 经营类型分析
		    jylxfx() {
		      let jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart);
		      let sData = [
		        {
		          name: "种植业",
		          value: 456
		        },
		        {
		          name: "养殖业",
		          value: 231
		        },
		        {
		          name: "畜牧业",
		          value: 231
		        },
		        {
		          name: "渔业",
		          value: 134
		        },
		        {
		          name: "种养结合",
		          value: 421
		        },
		        {
		          name: "林业",
		          value: 123
		        },
		        {
		          name: "其他",
		          value: 532
		        }
		      ];
		      jylxfxChartEle.dispose();
		      jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart);
		      jylxfxChartEle.setOption(jylxfxOption(sData));
		      tools.loopShowTooltip(jylxfxChartEle, jylxfxOption(sData), {
		        loopSeries: false,
		        seriesIndex: 0
		      });
		    },
			// 初始化图形
    		initEcharts() {
				let jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart); //经营类型分析
				window.addEventListener("resize", function() {
			        jylxfxChartEle.resize(); //经营类型分析
			    });
			}
		},
		mounted() {
			this.jylxfx(); //经营类型分析
			this.initEcharts();
		}
	}
</script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用EChartsECharts-GL来实现3D饼状图的步骤如下: 1. 安装依赖 ``` npm install echarts echarts-gl --save ``` 2. 引入EChartsECharts-GL 在Vue组件中引入EChartsECharts-GL: ```javascript import echarts from 'echarts' import 'echarts-gl' ``` 3. 准备数据 在Vue组件中准备数据,例如: ```javascript data() { return { chartData: [ { value: 335, name: 'Chrome' }, { value: 310, name: 'Firefox' }, { value: 234, name: 'Safari' }, { value: 135, name: 'IE' }, { value: 1548, name: '其他' } ] } } ``` 4. 创建ECharts实例 在Vue组件中创建ECharts实例: ```javascript mounted() { const chartDom = this.$refs.chart const myChart = echarts.init(chartDom, null, { renderer: 'canvas' }) ``` 这里指定了渲染器为canvas,因为ECharts-GL需要使用WebGL渲染器,而默认的渲染器为canvas。 5. 配置ECharts选项 在Vue组件中配置ECharts选项,包括饼状图的类型、数据、标签等: ```javascript const option = { tooltip: { trigger: 'item', formatter: '{a} <br/>{b}: {c} ({d}%)' }, series: [ { type: 'pie', radius: [20, 80], label: { show: true, formatter: '{b}:{d}%' }, data: this.chartData } ] } ``` 这里指定了饼状图的类型为pie,半径范围为[20, 80],显示标签,并使用之前准备的数据。 6. 使用ECharts-GL 在Vue组件中使用ECharts-GL来将饼状图转换为3D饼状图: ```javascript myChart.setOption(option) myChart.getZr().painter.configLayer(0, { clearColor: null, clearDepth: 0, motionBlur: true, lastFrameIndex: -1 }) myChart.setOption({ series: [ { type: 'pie3D', shading: 'lambert', label: { show: true, formatter: '{b}:{d}%' }, data: this.chartData } ] }) ``` 这里使用`setOption`方法来设置饼状图的选项,并使用`getZr()`方法获取渲染器实例,然后使用`configLayer`方法来设置WebGL渲染器的配置。最后使用`setOption`方法将饼状图转换为3D饼状图。 7. 渲染图表 在Vue组件中渲染图表: ```html <template> <div ref="chart" style="width: 100%; height: 500px;"></div> </template> ``` 这里使用`ref`属性来获取DOM元素,并设置宽度和高度。 完整代码如下: ```javascript <template> <div ref="chart" style="width: 100%; height: 500px;"></div> </template> <script> import echarts from 'echarts' import 'echarts-gl' export default { data() { return { chartData: [ { value: 335, name: 'Chrome' }, { value: 310, name: 'Firefox' }, { value: 234, name: 'Safari' }, { value: 135, name: 'IE' }, { value: 1548, name: '其他' } ] } }, mounted() { const chartDom = this.$refs.chart const myChart = echarts.init(chartDom, null, { renderer: 'canvas' }) const option = { tooltip: { trigger: 'item', formatter: '{a} <br/>{b}: {c} ({d}%)' }, series: [ { type: 'pie', radius: [20, 80], label: { show: true, formatter: '{b}:{d}%' }, data: this.chartData } ] } myChart.setOption(option) myChart.getZr().painter.configLayer(0, { clearColor: null, clearDepth: 0, motionBlur: true, lastFrameIndex: -1 }) myChart.setOption({ series: [ { type: 'pie3D', shading: 'lambert', label: { show: true, formatter: '{b}:{d}%' }, data: this.chartData } ] }) } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值