vue中实现3d饼图

项目中要求实现3d饼图,但是看了echarts图标,代码太多,想找个简单点的,就找到了highcharts


参考文档

实现效果

​​​​在这里插入图片描述

实现代码

安装
​​npm install highcharts --save
npm install highcharts-3d 
npm install highcharts-vue
引入
//可以在全局引入。也可在所需要的界面引入
import Highcharts from "highcharts/highcharts";
import highcharts3d from "highcharts/highcharts-3d";
完整代码
<template>
  <div id="EchartsPie" class="EchartsPie"></div>
</template>
<script>
import Highcharts from "highcharts/highcharts";
import highcharts3d from "highcharts/highcharts-3d";
highcharts3d(Highcharts);
export default {
  name: "",

  props: {},

  components: {},

  data() {
    return {
      list: [
        { value: 1048, name: "Search Engine" },
        { value: 735, name: "Direct" },
        { value: 580, name: "Email" },
        { value: 484, name: "Union Ads" },
        { value: 300, name: "Video Ads" },
      ],
    };
  },

  computed: {},

  watch: {},
  created() {},

  methods: {
    queryPie() {
      const data = [];
      this.list.forEach((e) => {
        data.push({
          y: e.value,
          name: e.name,
        });
      });
     Highcharts.chart("EchartsPie", {
        chart: {
          type: "pie",
          options3d: {
            enabled: true,
            alpha: 45, //整体倾斜度
            beta: 0, //向左倾斜为正  向右倾斜为负
          },
        },
        title: {
          text: "",
        },
       tooltip:{
        enabled:false
       },
        marginRight: 120,
        //1、 这时候设置的图例是不显示的
        legend: {
          align: "right", //程度标的目标地位
          verticalAlign: "top", //垂直标的目标地位
          shadow: false,
          layout: "vertical",
          x: -150, // 距离x轴的距离
          y: 0, // 距离Y轴的距离
          symbolPadding: 10,
          symbolHeight: 14,
          symbolRadius:3,
          itemStyle: {
            fontSize: '12px',
          },
        },
       
        colors: ["#D36969", "#FFB77A", "#9FE4FF", '#FF8282',"rgb(210 186 186)"],

        plotOptions: {
          pie: {
            allowPointSelect:true,
            //用来控制饼图的大小
            size: "100%",
            depth: 25, //3d饼图的高度
             // 2、重点  想要显示图例一定要加上这句话
            showInLegend: true, //重点图例显示
          },
        },
        series: [
          {
            type: "pie",
            name: "",
            data: data,
          },
        ],
      });
    },
  },

  mounted() {
    this.queryPie();
  },
};
</script> 

<style scoped>
.containers {
  width: 500px;
  height: 500px;
  margin: 0 auto;
}
.EchartsPie {
  width: 100%;
  height: 100%;
}
/* 禁止跳转到外部接口 */
::v-deep .highcharts-credits {
  display: none;
}
</style>
实现3D,你可以使用Vue配合一些第三方库来完成。以下是一个基本的实现步骤: 1. 首先,安装并引入一个支持3D形的可视化库,比如Three.js。可以使用npm或者CDN来引入该库。 2. 创建一个Vue组件来承载。你可以在组件中定义一个canvas元素,用于渲染形。 3.Vue组件的mounted钩子函数中,初始化Three.js,并创建一个场景、相机和渲染器。 4. 使用Three.js的几何体(Geometry)来创建的几何形状。你可以使用圆锥体(ConeBufferGeometry)来创建一个圆锥形状,然后根据数据设置圆锥的高度和角度。 5. 创建一个材质(Material)来给添加颜色和纹理。你可以使用基础材质(MeshBasicMaterial)或者Lambert材质(MeshLambertMaterial)来设置的外观。 6. 将几何体和材质结合起来,创建一个网格(Mesh)对象,并将其添加到场景中。 7. 设置相机的位置和朝向,以及渲染器的大小和背景色。 8. 使用动画循环函数(requestAnimationFrame)来更新场景中的状态,比如旋转角度或者颜色。 9. 根据你的需求,可以添加交互功能,比如鼠标悬停或点击事件,来改变的状态。 这只是一个基本的实现思路,具体的代码实现可能会有所不同,根据你选择的库和需求来决定具体的实现方式。你可以查阅相关文档和示例代码来帮助你更好地实现3D
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值