vue+Highcharts绘制3D饼图

news2024/10/6 10:40:13

效果图

 

一、下载highcharts插件

npm install highcharts

二、main.js全局配置插件

import Highcharts from "highcharts/highcharts";
import highcharts3d from "highcharts/highcharts-3d";
highcharts3d(Highcharts);

三、封装highcharts.vue组件

Highcharts.chart("EchartsPie", {
        chart: {
          type: "pie", //饼图
          options3d: {
            enabled: true, //使用3d功能
            alpha: 70, //延y轴向内的倾斜角度
            beta: 0,
          },
          backgroundColor: "rgba(0, 0, 0, 0)", // 不显示背景色
          width: 520,
          height: 220, //设置大小是为了饼图能在想要的区域中显示
        },
        legend: {
          bottom: "0%",
          itemStyle: {
            //图例文字的样式
            color: "#999",
            fontSize: 10,
          },
          left: "center",
          itemWidth: 100,
          // doesn't perfectly work with our tricks, disable it
          selectedMode: false,
          data: this.dataList.map((item, index) => {
            item.icon = "circle";
            return item;
          }),
        },
        title: {
          text: "", //图表的标题文字
        },
        subtitle: {
          text: "", //副标题文字
        },
        plotOptions: {
          pie: {
            allowPointSelect: true, //每个扇块能否选中
            cursor: "pointer", //鼠标指针
            size: 150,
            showInLegend: true, // 是否显示图例
            depth: 35, //饼图的厚度
            dataLabels: {
              enabled: true, //是否显示饼图的线形tip
              distance: 30, //设置引导线的长度
              color: "#999", //全局设置字体颜色
              style: {
                textOutline: "none", //去掉文字白边
                fontSize: "12",
              },
              formatter: function () {
                return this.point.name + this.y + "%";
              },
            },
          },
        },
        credits: {
          enabled: false, //禁用版权url    此处不设置
        },
        series: [
          {
            type: "pie",
            name: "", //统一的前置词,非必须
            data: [
              { name: "测试1:", y: 6.3, color: "#388D60" },
              { name: "测试2:", y: 2.3, color: "#BEB84C" },
              { name: "测试3:", y: 2.3, color: "#3A55B0" },
              { name: "测试4:", y: 9.3, color: "#7B40A5" },
              { name: "测试5:", y: 0.0, color: "#B76B3D" },
            ],
            startAngle: 0, //调整饼图的角度   方向:顺时针
            label: {
              show: true,
              position: "outside",
              formatter: "{b}:{d}%",
              normal: {
                show: true,
                fontSize: 14,
                formatter: ["  {a|{b}:{d}%}"].join("\n"), //用\n来换行
                rich: {
                  a: {
                    left: 20,
                    padding: [0, -140, 0, -180], //位置按需要调整
                  },
                },
              },
            },
          },
        ],
      });

四、页面调用

import EchartsBtD from "./components/echarts.bt3d.vue";
export default {
  components: { EchartsBtD },
  name: "top",
  data() {
    return {
      dataList: [
        {
          name: "综掘工作面",
          y: 25,
        },
        {
          name: "皮带机头",
          y: 11,
        },
        {
          name: "马头门",
          y: 22,
        },
        {
          name: "综采工作面",
          y: 18,
        },
        {
          name: "井底车场",
          y: 23,
        },
      ],
    };
  },
},
 <EchartsBtD v-if="dataList.length != 0" :dataList="dataList"></EchartsBtD>

五、组件完整代码

<template>
  <div class="echart-bt">
    <div id="EchartsPie" class="EchartsPie"></div>
  </div>
</template>
<script>
import Highcharts from "highcharts/highcharts";
import highcharts3d from "highcharts/highcharts-3d";
highcharts3d(Highcharts);
export default {
  props: ["dataList"],
  data() {
    return {
      option: {
        chart: {
          type: "pie", //饼图
          options3d: {
            enabled: true, //使用3d功能
            alpha: 70, //延y轴向内的倾斜角度
            beta: 0,
          },
          backgroundColor: "rgba(0, 0, 0, 0)", // 不显示背景色
          width: 520,
          height: 220, //设置大小是为了饼图能在想要的区域中显示
        },
        legend: {
          bottom: "0%",
          itemStyle: {
            //图例文字的样式
            color: "#999",
            fontSize: 10,
          },
          left: "center",
          itemWidth: 100,
          // doesn't perfectly work with our tricks, disable it
          selectedMode: false,
          data: this.dataList.map((item, index) => {
            item.icon = "circle";
            return item;
          }),
        },
        title: {
          text: "", //图表的标题文字
        },
        subtitle: {
          text: "", //副标题文字
        },
        plotOptions: {
          pie: {
            allowPointSelect: true, //每个扇块能否选中
            cursor: "pointer", //鼠标指针
            size: 150,
            showInLegend: true, // 是否显示图例
            depth: 35, //饼图的厚度
            dataLabels: {
              enabled: true, //是否显示饼图的线形tip
              distance: 30, //设置引导线的长度
              color: "#999", //全局设置字体颜色
              style: {
                textOutline: "none", //去掉文字白边
                fontSize: "12",
              },
              formatter: function () {
                return this.point.name + this.y + "%";
              },
            },
          },
        },
        credits: {
          enabled: false, //禁用版权url    此处不设置
        },
        series: [
          {
            type: "pie",
            name: "", //统一的前置词,非必须
            data: [
              { name: "测试1:", y: 6.3, color: "#388D60" },
              { name: "测试2:", y: 2.3, color: "#BEB84C" },
              { name: "测试3:", y: 2.3, color: "#3A55B0" },
              { name: "测试4:", y: 9.3, color: "#7B40A5" },
              { name: "测试5:", y: 0.0, color: "#B76B3D" },
            ],
            startAngle: 0, //调整饼图的角度   方向:顺时针
            label: {
              show: true,
              position: "outside",
              formatter: "{b}:{d}%",
              normal: {
                show: true,
                fontSize: 14,
                formatter: ["  {a|{b}:{d}%}"].join("\n"), //用\n来换行
                rich: {
                  a: {
                    left: 20,
                    padding: [0, -140, 0, -180], //位置按需要调整
                  },
                },
              },
            },
          },
        ],
      },
    };
  },

  watch: {},
  created() {},
  mounted() {
    this.option.series[0].data.forEach((item, index) => {
      item.name = this.dataList[index].name;
      item.y = this.dataList[index].y;
    });
    Highcharts.chart("EchartsPie", this.option);
  },
  methods: {},
};
</script> 

<style scoped>
.EchartsPie {
  width: 100%;
  height: 100%;
}
/* 禁止跳转到外部接口 */
::v-deep .highcharts-credits {
  display: none;
}

.echart-bt {
  width: 100%;
  height: 300px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeFileSync 12.5 正式发布,文件夹比较与同步软件

导读FreeFileSync 是一款开源软件&#xff0c;适用于 Windows、macOS 和 Linux。FreeFileSync 本质是一个用于文件夹对比和同步的软件&#xff0c;它可以创建和管理所有重要文件的备份副本。FreeFileSync 不是每次都复制每个文件&#xff0c;而是确定源文件夹和目标文件夹之间的…

vue-baidu-map-3x 使用记录

在 Vue3 TypeScript 项目中&#xff0c;为了采用 标签组件 的方式&#xff0c;使用百度地图组件&#xff0c;冲浪发现了一个开源库 ovo&#xff0c;很方便&#xff01;喜欢的朋友记得帮 原作者 点下 star ~ vue-baidu-map-3xbaidu-map的vue3/vue2版本&#xff08;支持v2.0、v…

海外ASO优化之如何给应用选择正确的类别

将我们的应用程序放在Apple App Store和Google Play正确的类别中&#xff0c;不仅对按类别浏览应用的用户有帮助&#xff0c;而且能够帮助我们的应用程序获得良好排名。 1、应用程序属于多个类别的解决方案。 需要选择最能描述我们应用程序的类别&#xff0c;检查一下每个类别…

.net几行代码音乐API各排行榜 热搜 入库

对比了几家大厂的音乐API的接口 这家相对规范些 现在开始从零开始 net6敏捷开发对接 入库吧 关键技术工具和思维 1 json 生成类 2 分析类 规划表设计3 sqlsuger codefirst 生成表 4 封装get post 连接5 类映射automapper6 sqlsuger 插入数据 1 json 生成类 宇宙 第 一的…

轻量级低代码平台,快速生成应用程序及不同类型的CRM系统

私有化部署的低代码快速开发平台 无需代码或通过少量代码就可以快速生成应用程序的开发平台。 这套低代码管理后台平台可以支持多种企业应用场景&#xff0c;包括但不限于 OA系统、 CRM系统、 ERP系统、项目管理系统、进销存系统等。无论是懂技术的开发人员还是不懂技术的业务…

多通道振弦数据记录仪应用于桥梁监测

随着城市化进程的加快&#xff0c;城市桥梁的数量不断增加。对于城市交通的保障作用&#xff0c;桥梁的重要性不言而喻。而为了保障桥梁的安全&#xff0c;桥梁监测的重要性也越来越受到人们的重视。在桥梁监测中&#xff0c;多通道振弦数据记录仪的应用得到了广泛的认可和应用…

算法通关村第五关——n数之和问题解析

1. 两数之和问题 力扣第1题就是两数之和问题&#xff0c;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一…

聚观早报|美团创始人王慧文退出;马斯克将直播与扎克伯格笼斗

【聚观365】8月8日消息 美团创始人王慧文退出马斯克将在X上直播与扎克伯格笼斗蚂蚁微尘故事余承东微博透露鸿蒙4新进展华为出资15亿成立地产公司 美团创始人王慧文退出 据国家企业信用信息公示系统显示&#xff0c;北京光年之外科技有限公司在近期完成工商变更&#xff0c;创…

Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

NameNode与DataNode回顾 主节点和副本节点通常指的是Hadoop分布式文件系统&#xff08;HDFS&#xff09;中的NameNode和DataNode。 NameNode&#xff08;主节点&#xff09;&#xff1a;NameNode是Hadoop集群中的一个核心组件&#xff0c;它负责管理文件系统的命名空间和元数据…

uni——不规则tab切换(skew)

案例展示 案例代码 <!-- 切换栏 --> <view class"tabBoxs"><view class"tabBox"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem":class"current item.id&…

Vue 本地应用 记事本 v-on v-model v-for使用

vue当中如何生成列表结构&#xff1f;使用的指令是v-for&#xff0c;同时要有一个可以生成列表的数据&#xff0c;常用的是数组。记事本里面的内容并不复杂&#xff0c;所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model&#xff0c;双向数据绑定&#xff08…

黑马头条项目学习--Day1: 环境搭建、SpringCloud微服务(注册发现、网关)

Nacos注册发现、网关 a. 项目介绍b. app登录1) 需求分析2) 表结构分析3) 手动加密&#xff08;md5随机字符串&#xff09;4) 用户端微服务搭建5) 功能实现6) app网关7) 网关校验jwt8) 前端集成, 配置nginx a. 项目介绍 业务说明 技术栈说明 [外链图片转存失败,源站可能有防盗…

基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)

文章目录 一、硬件清单二、模块连接三、程序设计四、项目源码 项目环境&#xff1a; 1. MSP430F55292. Code Composer Studio3. 蓝牙调试助手 项目简介&#xff1a; 小车可分为3种工作模式&#xff0c;每种工作模式都会打印在OLED显示屏上&#xff0c;通过按键转换工作模式。 模…

RocketMQ 5.x broker注册到Nameserve源码分析

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 RocketMQ版本 5.1.0 背景 入口 这里源码入口我们就从broker启动开始查看吧&#xff0c;然后慢慢到NameServer 由于不知道具体代码在哪&#xff0c;所以我们就…

Three.js阴影

目录 Three.js入门 Three.js光源 Three.js阴影 使用灯光后&#xff0c;场景中就会产生阴影。物体的背面确实在黑暗中&#xff0c;这称为核心阴影&#xff08;core shadow&#xff09;。我们缺少的是落下的阴影&#xff08;drop shadow&#xff09;&#xff0c;即对象在其他…

汇总当下的AI绘画模型

AI绘画从今年过年那阵儿兴起&#xff0c;到现在(2023.8)已经半年过去了&#xff0c;涌现了很多风格迥异的模型&#xff0c;我在这里简单汇总一些。 一、写实人物类 1.1 AWPortrait 比较拟真的人物肖像 1.2 XXMix_9realistic 2.5D人物模型&#xff0c;因为画面带有一丝油画的…

从零开始学习 Java:简单易懂的入门指南之API、String类(八)

常用API 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

【SQL应知应会】表分区(四)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…

深入大B行业,什么是最有力的敲门砖?

引言&#xff1a;2023上半年&#xff0c; 能扛过外部环境各种变化&#xff0c; 这样的科技公司就很不容易了。 【全球云观察 &#xff5c; 热点关注】在当前后疫情时代下&#xff0c;全球经济增长处于的低增长期&#xff0c;这对所有科技企业的发展带来了直接影响。 有业内人…

【ChatGPT 指令大全】怎么使用ChatGPT来辅助学习英语

在当今全球化的社会中&#xff0c;英语已成为一门世界性的语言&#xff0c;掌握良好的英语技能对个人和职业发展至关重要。而借助人工智能的力量&#xff0c;ChatGPT为学习者提供了一个有价值的工具&#xff0c;可以在学习过程中提供即时的帮助和反馈。在本文中&#xff0c;我们…