Vue ECharts line3D点击空白处重置图表视角- 附完整示例

ECharts:一个基于 JavaScript 的开源可视化图表库。

目录

效果

 一、介绍

 1、官方文档:Apache ECharts

2、官方示例

二、准备工作

1、安装依赖包

 2、示例版本 

三、使用步骤

1、在单页面引入 ' echarts '

2、指定容器并设置容器宽高

3、数据处理(关键点)

        1)数据格式为一维数组  

        2)x、y、z轴设置axisLabel的margin

        3)监听“空白处”的事件 - 点击“空白处”的时候重置图表

四、完整示例


效果

 一、介绍

 1、官方文档:Apache ECharts

Apache EChartsApache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。https://echarts.apache.org/zh/index.html

2、官方示例

二、准备工作

1、安装依赖包

npm install echarts echarts-gl --save

 2、示例版本 

"echarts": "^5.4.2",
"echarts-gl": "^2.0.9",

注:3D图表需要安装   "echarts-gl",切记

三、使用步骤

1、在单页面引入 ' echarts '

import * as echarts from "echarts";

注:上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。详见官方文档:在项目中引入 ECharts - 入门篇 - Handbook - Apache ECharts

2、指定容器并设置容器宽高

<template>
  <div id="main"></div>
</template>

<script>
  import * as echarts from "echarts";
  export default {
    name: "mutiYAxis",
    data() {
      return {
     
      };
    },
    methods: {
      initChart() {
        let data = this.data
        let chartDom = document.getElementById("main");
        let myChart = echarts.init(chartDom);
        let option;

        ...详见完整示例   
      },
    },
  };
</script>

<style scoped>
  #main {
    width: 1000px;
    height: 500px;
  }
</style>

3、数据处理(关键点)

        1)数据格式为一维数组  
[
    [
        1.25,
        0,
        0
    ],
    [
        0.6648083899854317,
        1.0353777219787,
        0.2244367291811391
    ],
    [
        -0.48889458931439583,
        1.068254166584824,
        0.5702471407416707
    ],
    [
        -1.0809033510776862,
        0.1540790360935266,
        1.1398102439909492
    ],
    [
        -0.650032792305071,
        -0.7526218011559339,
        2.000488320197701
    ],
    [
        0.2547247747068576,
        -0.8611009233593129,
        3.1740848966345796
    ],
    [
        0.7849024914214132,
        -0.22841148463694622,
        4.633432549928953
    ],
    [
        0.5771151343572326,
        0.5029258196352845,
        6.306644538830419
    ],
    [
        -0.1091605463221669,
        0.7422602172849531,
        8.088364896663746
    ],
    [
        -0.7052790532756156,
        0.3190087600728554,
        9.85625637256739
    ],
    [
        -0.6991599213595703,
        -0.45330790513892094,
        11.490145900584054
    ],
    [
        0.004065150973672331,
        -0.9185243034653587,
        12.890831379309573
    ],
    [
        0.8578295942092691,
        -0.5454594645776986,
        13.995606548843941
    ],
    [
        1.0090791801824923,
        0.4672249852307217,
        14.788074361226283
    ],
    [
        0.16270461078510265,
        1.178730899762885,
        15.300713076801252
    ],
    [
        -0.9405668342457869,
        0.80511900322781,
        15.609793498951996
    ],
    [
        -1.1961396322597975,
        -0.3595981394199102,
        15.823442787056548
    ],
    [
        -0.33596891645118115,
        -1.1738470535820111,
        16.064722830628625
    ],
    [
        0.764879924501324,
        -0.8699084264271705,
        16.45237137611818
    ],
    [
        1.0588477255161683,
        0.16051016617013988,
        17.08221987112051
    ],
    [
        0.3968325245712395,
        0.8877782253688824,
        18.012196086186695
    ],
    [
        -0.48103554848031876,
        0.734781092044553,
        19.253258565837005
    ],
    [
        -0.8030631267668673,
        -0.007108438577899955,
        20.767681644172168
    ],
    [
        -0.4042968487238494,
        -0.6420852869061568,
        22.474959415784156
    ],
    [
        0.3190650369180267,
        -0.6811708936747477,
        24.264404705511872
    ]
]
        2)x、y、z轴设置axisLabel的margin
        xAxis3D: {
          axisLabel: {
            margin: 5
          }
        },
        yAxis3D: {
          axisLabel: {
            margin: 10
          }
        },
        zAxis3D: {
          axisLabel: {
            margin: 20
          }
        },

注:如果不分别设置会出现重叠的情况,如下图所示

下图是设置了效果

        3)监听“空白处”的事件 - 点击“空白处”的时候重置图表视角

事件与行为 - 概念篇 - 使用手册 - Apache ECharts

Documentation - Apache ECharts


      myChart.getZr().on('click', event => {
        // 没有 target 意味着鼠标/指针不在任何一个图形元素上,它是从“空白处”触发的。
        if (!event.target) {
          // 点击在了空白处,重置图表视角。
          option.grid3D.viewControl.alpha = 20;
          option.grid3D.viewControl.beta = 40;
          myChart.setOption(option);
        }
      })

四、完整示例

<template>
  <div class="line3D">
    <div id="main"></div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-gl';
export default {
  name: "line3D",
  data() {
    return {};
  },
  mounted() {
    this.$nextTick(() => {
      this.initChart();
    });
  },
  methods: {
    initChart() {
      let chartDom = document.getElementById("main");
      let myChart = echarts.init(chartDom);
      let option;

      let data = [];
      for (let t = 0; t < 25; t += 1) {
        let x = (1 + 0.25 * Math.cos(75 * t)) * Math.cos(t);
        let y = (1 + 0.25 * Math.cos(75 * t)) * Math.sin(t);
        let z = t + 2.0 * Math.sin(75 * t);
        data.push([x, y, z]);
      }

      console.log(data);

      option = {
        tooltip: {
          trigger: 'item',
        },
        backgroundColor: '#fff',
        visualMap: {
          show: false,
          dimension: 2,
          min: 0,
          max: 30,
          inRange: {
            color: [
              '#313695',
              '#4575b4',
              '#74add1',
              '#abd9e9',
              '#e0f3f8',
              '#ffffbf',
              '#fee090',
              '#fdae61',
              '#f46d43',
              '#d73027',
              '#a50026'
            ]
          }
        },
        grid3D: {
          boxWidth: 200 // 控制立体空间的大小
        },
        viewControl: {
          distance: 150 // 调节视角与物体之间的距离
        },
        xAxis3D: {
          type: 'value',
          name: 'X',
          nameGap: 30,
          axisLabel: {
            margin: 5
          }
        },
        yAxis3D: {
          type: 'value',
          name: 'Y',
          nameGap: 30,
          axisLabel: {
            margin: 10
          }
        },
        zAxis3D: {
          type: 'value',
          name: 'Z',
          nameGap: 30,
          axisLabel: {
            margin: 20
          }
        },
        grid3D: {
          viewControl: {
            projection: 'orthographic'
          }
        },
        series: [
          {
            type: 'line3D',
            data: data,
            lineStyle: {
              width: 4
            }
          }
        ],
      };

      option && myChart.setOption(option);

      myChart.getZr().on('click', event => {
        // 没有 target 意味着鼠标/指针不在任何一个图形元素上,它是从“空白处”触发的。
        if (!event.target) {
          // 点击在了空白处,重置图表。
          option.grid3D.viewControl.alpha = 20;
          option.grid3D.viewControl.beta = 40;
          myChart.setOption(option);
        }
      })
    },
  },
};
</script>

<style lang="less" scoped>
#main {
  width: 1000px;
  height: 500px;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql 优化——磁盘空间优化

前言 有的时候&#xff0c;表的数据太多&#xff0c;为了提高查询以及存储&#xff0c;就把历史数据放到一个历史表里&#xff0c;在把历史数据删除&#xff0c;发现虽然历史数据删除&#xff0c;表的大小并没有发生改变。 Innodb 表有两部分&#xff0c;即&#xff1a;表结构…

【Emgu CV教程】9.1、形态学常用操作之腐蚀

文章目录 一、相关概念1.什么叫形态学2.形态学操作的目的3.形态学都包含哪些操作4.结构元素StructuringElement 二、腐蚀1.什么叫腐蚀2.腐蚀的作用3.腐蚀的函数 三、演示1.原始素材2.代码3.运行结果 一、相关概念 1.什么叫形态学 形态学&#xff0c;英文名称morphology&#…

【C++】了解一下STL

个人主页 &#xff1a; zxctscl 如有转载请先通知 STL 1. 什么是STL2. STL的版本3. STL的六大组件4. STL的重要性5. 如何学习STL6. STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件…

C语言:基于单链表实现的泊车管理系统

一、需求 &#xff08;1&#xff09;管理员方账号登录&#xff1b; &#xff08;2&#xff09;车位管理显示&#xff1a;车位状态&#xff1b; &#xff08;3&#xff09;收费管理&#xff1a;小轿车 5元/小时&#xff0c;面包车6元/小时&#xff0c;大货车或客车7元/小时&a…

vulhub中Weblogic 管理控制台未授权远程命令执行漏洞复现(CVE-2020-14882,CVE-2020-14883)

Weblogic是Oracle公司推出的J2EE应用服务器。在2020年10月的更新中&#xff0c;Oracle官方修复了两个长亭科技安全研究员voidfyoo 提交的安全漏洞&#xff0c;分别是CVE-2020-14882和CVE-2020-14883。 CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台&#x…

【Flutter 面试题】dart是值传递还是引用传递?

【Flutter 面试题】dart是值传递还是引用传递&#xff1f; 文章目录 写在前面解答补充说明值传递示例引用传递示例总结 写在前面 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&#xff0c;51CTO专家博主…

vs2022的下载及安装教程(Visual Studio 2022)

vs简介 Visual Studio在团队项目开发中使用非常多且功能强大&#xff0c;支持开发人员编写跨平台的应用程序;Microsoft Visual C 2022正式版(VC2022运行库)&#xff0c;具有程序框架自动生成&#xff0c;灵活方便的类管理&#xff0c;强大的代码编写等功能&#xff0c;可提供编…

信息系统项目管理师008:两化融合与智能制造(1信息化发展—1.3现代化创新发展—1.3.2两化融合与智能制造)

文章目录 1.3.2 两化融合与智能制造1.两化融合2.智能制造 记忆要点总结 1.3.2 两化融合与智能制造 “坚持自主可控、安全高效&#xff0c;推进产业基础高级化、产业链现代化&#xff0c;保持制造业比重基本稳定&#xff0c;增强制造业竞争优势&#xff0c;推动制造业高质量发展…

[云原生] k8s配置资源管理

一、Secret的资源配置 1.1 Secret配置的相关说明 Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源&#xff0c;这类数据虽然也可以存放在 Pod 或者镜像中&#xff0c;但是放在 Secret 中是为了更方便的控制如何使用数据&#xff0c;并减少暴露的风险。 Secret 有…

钉钉如何通过AppLink快速连接仓储系统

一、什么是APPlink&#xff1f; APPlink是RestCloud打造的一款简单易用的零代码自动化集成平台&#xff0c;为业务流程提供自动化的解决方案&#xff0c;将企业内部的核心系统以及第三方应用程序和云服务等进行集成。无论是开发人员还是业务人员&#xff0c;都可以使用APPlink…

HTML静态网页成品作业(HTML+CSS)——阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

打破界限,释放创新:一键将HTML转化为PDF

在互联网时代&#xff0c;HTML作为网页的标准语言&#xff0c;承载着无数的信息与创意。然而&#xff0c;有时我们需要将这些在线内容转化为可打印、可分享的PDF格式。这时&#xff0c;一款高效、便捷的转换工具就显得尤为重要。 首先&#xff0c;我们要进入首助编辑高手主页面…

《IEEE Transactions on Robotics》发表!北京大学研究团队推出具有多种运动模态的软体两栖机器人

两栖机器人以其在复杂水陆混合环境中的卓越适应性而脱颖而出&#xff0c;成为非结构化场景下信息监测、资源勘探和灾难救援等多元化任务的理想选择。凭借能够在水生和陆生环境中自如切换的优势&#xff0c;两栖机器人在如上任务执行过程中展现出对多变环境的惊人适应能力。 在…

springboot实现国际化

引言 今天在开发过程中&#xff0c;遇到国外客户&#xff0c;要求项目一些返回msg中&#xff0c;不能再有中文&#xff0c;于是便有了国际化需求。 How to do 1.在项目resources下创建i18n文件夹以及messages.properties文件 messages.properties 国际化主文件 phoneErr.ms…

easyexcel文件上传

easyexcel文件上传 前言&#xff1a;功能开发中&#xff0c;难免碰到数据上传下载功能&#xff0c;excel上传常见用于报表上传&#xff0c;绩效上传&#xff0c;考勤上传… 使用步骤&#xff1a; 1&#xff0c;编写业务层&#xff1a; 1&#xff0c;添加easyexcel依赖 <…

Langchain-Chatchat本地部署

1.前言&#xff1a; 最近AI爆发式的火&#xff0c;忆往昔尤记得16,17那会移动互联网是特别火热的&#xff0c;也造富了一批公司和个人&#xff0c;出来了很多精妙的app应用。现在轮到AI发力了&#xff0c;想想自己也应该参与到这场时代的浪潮之中&#xff0c;所以就找了开源的…

割点原理及封装好的割点类

作者推荐 视频算法专题 预备知识 本分析针对&#xff1a;连通无向图G。 搜索树 节点的父子关系&#xff1a;任意 节点的邻接 节点除了已处理 节点&#xff0c;都是它的子 节点。 以任意一点为根开始DFS&#xff0c;计算所有 节点的父子关系。只保留个子 节点到父 节点形成…

linux:线程的控制

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、线程的总结1. 线程的优点2. 线程的缺点3. 线程异常4.线程和进程 二、线程的控制创建线程线程终止线程等待获取返回值 线程分离 总结 前言 本文作为我对于线程的…

git远程仓库使用

赋值这个地址clone 克隆之后 cd slam_oncloud/ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/slam_oncloud.git 查看一下 linuxchenxiao:/media/linux/mydisk/cloud_slam/slam_oncloud$ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/sla…

GitHub Desktop的常用操作【图形化】

文章目录 【1】仓库的创建和删除【2】文件操作【3】分支原理与分支操作1.分支创建2.分支合并 【4】标签 【1】仓库的创建和删除 在本地创建一个新的仓库&#xff1a; 然后输入仓库的名称&#xff0c;描述&#xff0c;并选择路径&#xff1a; 点击完后就发现我们的仓库创建好…