vue3中使用echarts饼状图,并且点击第一个饼状图某一块显示这部分信息的饼状图

1. 在项目中安装echarts
npm install echarts --save
 2. 引入echarts
 <div id="chart" :style="{ width: '150px', height: '150px' }"></div>
 <div id="childCharts" :style="{ width: '150px', height: '150px' }"></div>
function initChart() {
  // 基于准备好的dom,初始化echarts实例
  var myChart = echarts.init(document.getElementById('chart'));
  const chartData = list.value[0]?.subs.map((item) => {
    return {
      name: item.name,
      value: item.count,
      id: item.id,
      subs: item.subs,
    };
  });

// 绘制图表
  myChart.setOption({
    title: {
      text:list.value[0]?.name,
      left: "center",
      textStyle: {
        fontSize: 16,
        fontWeight: "normal",
        color: "#008000",
      },
    },
    tooltip: {
      trigger: "item",
      position: function (point: number[]) {
        // 调整弹出框位置的逻辑
        var offsetX = point[0] + 10;
        var offsetY = point[1] + 10;
        return [offsetX, offsetY];
      },
    },
    series: [
      {
        type: "pie",
        radius: "90%",
        top: "15",
        avoidLabelOverlap: false,
        label: {
          show: false,
        },
        labelLine: {
          show: false,
        },
        data: chartData,
      },
    ],
  });
//点击当前饼状图的某一块,获取下一个饼图
  myChart.on("click", (params) => {
    parentsChart(params.data);
  });
}


function childChart(data) {
  const childData = data?.subs?.map((item) => {
    return {
      name: item.name,
      value: item.count,
      id: item.id,
      subs: item.subs,
    };
  });
  var childChart = echarts.init(document.getElementById('childChart'));
  childChart .setOption({
    title: {
      text: data.name,
      left: "center",
      textStyle: {
        fontSize: 16,
        fontWeight: "normal",
        color: "#008000",
      },
    },
    tooltip: {
      trigger: "item",
      position: function (point: number[]) {
        // 调整弹出框位置的逻辑
        var offsetX = point[0] + 10;
        var offsetY = point[1] + 10;
        return [offsetX, offsetY];
      },
    },
    series: [
      {
        type: "pie",
        radius: "90%",
        top: "15",
        avoidLabelOverlap: false,
        label: {
          show: false,
        },
        labelLine: {
          show: false,
        },
        data: childData,
      },
    ],
  });
}
3. 效果

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3使用echarts饼状图可以通过以下步骤实现: 1. 首先,确保你已经安装了echartsvue-echarts插件。可以通过npm或yarn进行安装。 2. 在你的Vue组件,引入echartsvue-echarts插件。 ```javascript import * as echarts from 'echarts'; import ECharts from 'vue-echarts'; ``` 3. 在template使用ECharts组件,并设置图表的类型为饼状图。 ```html <template> <div> <e-charts :options="chartOptions" :auto-resize="true"></e-charts> </div> </template> ``` 4. 在data定义chartOptions对象,并设置饼状图的配置选项,如数据和样式。 ```javascript data() { return { chartOptions: { series: [ { type: 'pie', data: [ { value: 335, name: 'Category 1' }, { value: 310, name: 'Category 2' }, { value: 234, name: 'Category 3' }, { value: 135, name: 'Category 4' }, { value: 1548, name: 'Category 5' }, ], }, ], }, }; }, ``` 5. 在mounted生命周期钩子,初始化echarts实例,并将其绑定到ECharts组件上。 ```javascript mounted() { this.$nextTick(() => { const chart = echarts.init(this.$refs.chart); this.$refs.chart.echarts = chart; }); }, ``` 6. 最后,在需要的地方使用ECharts组件。 ```html <template> <div> <e-charts :options="chartOptions" :auto-resize="true" ref="chart"></e-charts> </div> </template> ``` 通过以上步骤,你就可以在Vue3使用echarts饼状图了。记得在引用组件的时候添加v-if判断来解决刷新不及时的问题。<span class="em">1</span> #### 引用[.reference_title] - *1* [vue3+echarts实现炫酷的百分比饼图,echarts组件封装](https://blog.csdn.net/xu20166424/article/details/128558713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值