vue开发图表echarts基本使用

news2024/11/16 7:54:30

官网传送门

1.echarts-介绍

是一个js插件
性能好可流畅远行PC和移动设备
兼容主流浏览器
提供很多图标,用户且可自行修改。

2.使用npm安装

npm install echarts

3.echarts-基础配置

series
-- 系列列表。每个系列通过 type 决定自己的图表类型
-- 大白话:图标数据,指定什么类型的图标,可以多个图表重叠。
xAxis:直角坐标系 grid 中的 x 轴
-- boundaryGap: 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
yAxis:直角坐标系 grid 中的 y 轴
grid:直角坐标系内绘图网格。
-- 当刻度标签溢出的时候,grid 区域是否包含坐标轴的刻度标签。如果为true,则显示刻度标签
-- 如果left right等设置为 0% 刻度标签就溢出了,此时决定是否显示刻度标签
title:标题组件
tooltip:提示框组件
legend:图例组件
color:调色盘颜色列表
数据堆叠,同个类目轴上系列配置相同的stack值后 后一个系列的值会在前一个系列的值上相加。

echarts所有配置项、

使用示例


<template>
  <div>
    <el-tabs v-model="tabActive" class="demo-tabs">
      <el-tab-pane v-for="item in tab" :key="item.name" :label="item.label" :name="item.name"></el-tab-pane>
    </el-tabs>
    <el-button :type="btnIndex===1?'primary':'default'" @click="handleBtnClick(1)">日</el-button> <el-button :type="btnIndex===2?'primary':'default'"  @click="handleBtnClick(2)">周</el-button> <el-button :type="btnIndex===3?'primary':'default'"  @click="handleBtnClick(3)">月</el-button>
    <div class="curve-echarts">
      <TypeChat v-if="tabActive === 1" ></TypeChat>
      <Charts v-else></Charts>
    </div>
  </div>
</template>
<script lang="ts" setup>
import { ref, provide } from "vue";
import type { TabsPaneContext } from "element-plus";
const tabActive = ref(1);
import Charts from "./charts.vue";
import TypeChat from "./typeChat.vue";
const handleClick = (tab: TabsPaneContext, event: Event) => {
  console.log(tab, event);
};
const btnIndex = ref<number>(1)
const tab = [
  { label: "办理类型", name: 1 },
  { label: "公司类型", name: 2 }
];
const handleBtnClick = (index:number)=>{
  btnIndex.value = index;
}
</script>
<style lang="less" scoped>
.title-box {
  text-align: center;
  margin-bottom: 20px;
  .chart-title {
    color: #1e85f1;
    font-family: Microsoft YaHei-Bold, Microsoft YaHei;
    font-weight: bold;
  }
}

</style>

上面是引入了下面两个图表

<template>
  <div class="box">
    <figure>
      <v-chart :option="bar" :autoresize="true" />
    </figure>
  </div>
</template>

<script lang="ts" setup>
import { ref, provide } from "vue";
import { use } from "echarts/core";
import { CanvasRenderer } from "echarts/renderers";
import { BarChart, LineChart, PieChart, MapChart, RadarChart, ScatterChart, EffectScatterChart, LinesChart } from "echarts/charts";
import { GridComponent, PolarComponent, GeoComponent, TooltipComponent, LegendComponent, TitleComponent, VisualMapComponent, DatasetComponent, ToolboxComponent, DataZoomComponent } from "echarts/components";
import VChart, { THEME_KEY } from "vue-echarts";

use([BarChart, LineChart, PieChart, MapChart, RadarChart, ScatterChart, EffectScatterChart, LinesChart, GridComponent, PolarComponent, GeoComponent, TooltipComponent, LegendComponent, TitleComponent, VisualMapComponent, DatasetComponent, CanvasRenderer, ToolboxComponent, DataZoomComponent]);

provide(THEME_KEY, "westeros");

const bar = {
  title: {
    text: "公司类型办理统计分析",
    left: "center",
    textStyle:{
      color:"#1E85F1"
    }
  },
  // 是否开启渲染动画
  calculable: true,
  // 距离dom四周的距离
  grid: {
    top: "25%",
    left: "10%",
    right: "10%",
    bottom: "5%",
    containLabel: true
  },
  // 鼠标移上去显示悬浮信息
  tooltip: {
    show: true,
    trigger: "axis",
    axisPointer: {
      type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
    }
  },
  // x轴坐标系
  xAxis: [
    {
      type: "category", // 默认显示类目名
      boundaryGap: true, // 坐标轴两端是否留白
      nameTextStyle: {
        color: "#333",
        fontSize: 14
      },
      // 坐标轴轴线相关设置
      axisLine: {
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      // 坐标轴刻度标签相关设置
      axisLabel: {
        interval: "auto",
        color: "#333",
        padding: [5, 0, 0, 0],
        rotate: 0
      },
      // 坐标轴刻度相关设置
      axisTick: {
        show: false
      },
      data: ["周一", "周二", "周三", "周四", "周五"]
    }
  ],
  // y轴坐标系
  yAxis: [
    {
      type: "value",
      nameTextStyle: {
        color: "#333",
        fontSize: 14
      },
      axisLine: {
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      // 坐标轴在grid区域的分隔线
      splitLine: {
        show: true,
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      axisLabel: {
        color: "#333"
      },
      axisTick: {
        show: false
      }
    }
  ],
  color: {
  type: 'linear',
  x: 0,
  y: 0,
  x2: 0,
  y2: 1,
  colorStops: [{
      offset: 0, color: '#3B99FD' // 0% 处的颜色
  }, {
      offset: 1, color: '#81B8F2' // 100% 处的颜色
  }],
  global: false // 缺省为 false
}
};
</script>

<style lang="less" scoped>
.box {
  display: flex;
  flex-direction: column;
  justify-content: center;
  figure {
    display: inline-block;
    position: relative;
    margin: 2em auto;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 8px;
    box-shadow: 0 0 45px rgba(0, 0, 0, 0.2);
    padding: 30px;

    .echarts {
      width: 70vw;
      min-width: 500px;
      height: 600px;
    }
  }
}
</style>

在这里插入图片描述

<template>
  <div class="box">
    <figure>
      <v-chart :option="option" :autoresize="true" />
    </figure>
  </div>
</template>

<script lang="ts" setup>
import { ref, provide } from "vue";
import { use } from "echarts/core";
import { CanvasRenderer } from "echarts/renderers";
import { BarChart, LineChart, PieChart, MapChart, RadarChart, ScatterChart, EffectScatterChart, LinesChart } from "echarts/charts";
import { GridComponent, PolarComponent, GeoComponent, TooltipComponent, LegendComponent, TitleComponent, VisualMapComponent, DatasetComponent, ToolboxComponent, DataZoomComponent } from "echarts/components";
import VChart, { THEME_KEY } from "vue-echarts";

use([BarChart, LineChart, PieChart, MapChart, RadarChart, ScatterChart, EffectScatterChart, LinesChart, GridComponent, PolarComponent, GeoComponent, TooltipComponent, LegendComponent, TitleComponent, VisualMapComponent, DatasetComponent, CanvasRenderer, ToolboxComponent, DataZoomComponent]);

provide(THEME_KEY, "westeros");
const option = {
  title: {
    text: "办理类型统计分析",
    left: "center",
    textStyle:{
      color:"#1E85F1"
    }
  },
  // 是否开启渲染动画
  calculable: true,
  // 距离dom四周的距离
  grid: {
    top: "25%",
    left: "10%",
    right: "10%",
    bottom: "5%",
    containLabel: true
  },
  // 图例组件,用来显示不同系列的标记
  legend: {
    data: ["午餐消费金额", "变更审批"],
    align: "left",
    right: "3%",
    top: "5%",
    itemGap: 30,
    icon: "roundRect",
    itemWidth: 15, // 图例图形宽度
    itemHeight: 12, // 图例图形高度
    textStyle: {
      color: "#333",
      fontSize: 14
    }
  },
  // 鼠标移上去显示悬浮信息
  tooltip: {
    show: true,
    trigger: "axis",
    axisPointer: {
      type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
    }
  },
  // x轴坐标系
  xAxis: [
    {
      type: "category", // 默认显示类目名
      boundaryGap: true, // 坐标轴两端是否留白
      nameTextStyle: {
        color: "#333",
        fontSize: 14
      },
      // 坐标轴轴线相关设置
      axisLine: {
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      // 坐标轴刻度标签相关设置
      axisLabel: {
        interval: "auto",
        color: "#333",
        padding: [5, 0, 0, 0],
        rotate: 0
      },
      // 坐标轴刻度相关设置
      axisTick: {
        show: false
      },
      data: ["周一", "周二", "周三", "周四", "周五"]
    }
  ],
  // y轴坐标系
  yAxis: [
    {
      type: "value",
      nameTextStyle: {
        color: "#333",
        fontSize: 14
      },
      axisLine: {
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      // 坐标轴在grid区域的分隔线
      splitLine: {
        show: true,
        lineStyle: {
          color: "#979797",
          type: "dotted" // solid、dashed、dotted(实线、虚线、圆点虚线)
        }
      },
      axisLabel: {
        color: "#333"
      },
      axisTick: {
        show: false
      }
    }
  ],
  // 专门用来放数据和设置图表类型等属性
  series: [
    {
      name: "午餐消费金额",
      type: "bar", // 图表类型
      barWidth: 18,
      data: [20, 30, 15, 24, 18]
    },
    {
      name: "变更审批",
      type: "bar",
      barWidth: 18,
      data: [15, 23, 28, 12, 22]
    },
    {
      name: "变更审批3",
      type: "bar",
      barWidth: 18,
      data: [11, 23, 28, 12, 22]
    }
  ],
  color: ["#5e9adb", "#9cc4b4", "#e8cb9d"]
};
</script>

<style lang="less" scoped>
.box {
  display: flex;
  flex-direction: column;
  justify-content: center;
  figure {
    display: inline-block;
    position: relative;
    margin: 2em auto;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 18px;
    box-shadow: 0 0 45px rgba(0, 0, 0, 0.2);
    padding: 30px;

    .echarts {
      width: 70vw;
      min-width: 500px;
      height: 800px;
    }
  }
}
</style>

可以看出基本的配置

//标题
  title: {
    text: "公司类型办理统计分析",
    left: "center",
    textStyle:{
      color:"#1E85F1"
    }
  },
//渐变色
  color: {
  type: 'linear',
  x: 0,
  y: 0,
  x2: 0,
  y2: 1,
  colorStops: [{
      offset: 0, color: '#3B99FD' // 0% 处的颜色
  }, {
      offset: 1, color: '#81B8F2' // 100% 处的颜色
  }],
  global: false // 缺省为 false
}
//系列列表
  series: [
    {
      name: "午餐消费金额",
      type: "bar", // 图表类型
      barWidth: 29,
      data: [20, 30, 15, 24, 18]
    }
  ],

在这里插入图片描述

感谢观看~

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

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

相关文章

Web安全——数据库mysql学习

数据库mysql基础 Web安全分享一、数据库的基本操作1、MYSQL登录与退出2、MYSQL数据库的一些解释3、MYSQL注释符有三种&#xff1a; 二、数据库的一些基本操作1、数据库的增删改查(sql语句) 三、table 表的操作1、查看表结构2、查看表的内容3、建立表4、约束条件5、修改表的操作…

小红书发布图文视频笔记软件

小红书发布图文视频笔记软件,&#x1f198;这个工具&#xff0c;不愧是做小红书的神&#xff01;附教程#新媒体 #微信创作者助手 #小红书 微信时刻 软件有月卡、季卡、半年卡、年卡 【引流脚本软件开发定制&#xff0c;欢迎你】 服务时间&#xff1a;&#xff08;8&#xff1a…

公司新来了个测试,一副毛头小子的样儿,哪想到是新一代卷王。。。

内卷&#xff0c;是现在热度非常高的一个词汇&#xff0c;随着热度不断攀升&#xff0c;隐隐到了“万物皆可卷”的程度。 在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是…

vue基础-某个项目ESLint不生效问题

文章目录 前言一、解决方法二、在配置文件中添加一下配置三、本人电脑的ESLint配置总结 前言 vue基础&#xff0c;最近接手同事的项目&#xff0c;发现ESLint不生效了&#xff0c;找了很久也没有发现问题&#xff0c;因为其他的项目是可以用的。 一、解决方法 1、在vscode中打…

KafKa 3.x(二、Broker,消费者)

4. Kafka Broker 4.1 kafka Broker工作流程 4.1.1 Zoopkeeper存储的Kafka信息 启动Zookeeper客户端通过ls命令查看kafka相关信息 在Zookeeper的服务端存储的Kafka相关信息 /kafka/brokers/ids [0,1,2] 记录那些服务器/kafka/brokers/topics/first/partitions/0/state {“l…

关于超卖程序问题分析-java

关于超卖程序问题分析 1.并发情况下&#xff0c;GET缓存 判断>0&#xff0c;成立&#xff0c;均执行扣减库存&#xff0c;导致超卖 2.加锁 以库存key&#xff0c;加锁&#xff0c;setNx&#xff0c;finally解锁 deleteKey 存在问题 1.误解锁&#xff08;是不是也是因为…

Android 11 SystemUI 启动流程

SystemUI 有哪内容 从表面上看&#xff0c; 我们看到的状态栏、通知栏、下拉菜单、导航栏、锁屏、最近任务、低电提示等系统页面都是 SystemUI 的。SystemUI&#xff0c;在源码目录中位于&#xff1a; framework/base/packages 目录下&#xff0c; 可见 SystemUI 和 framework…

vue3脚本绑定CodeMirror的使用

代码&#xff1a; <template><CodeMirrorref"codeMirror":value"codeVal":languageSingle"languageSingle":readOnly"!isEdit"submitCode"submitCode"></CodeMirror> </template><script setup…

文华财经期货APP随身行和同花顺期货可以模拟交易的期货软件,那个更好用?

期货app是一种可以在手机上进行期货交易和行情分析的软件&#xff0c;它可以让投资者随时随地掌握期货市场的动态&#xff0c;进行投资决策。随着科技的发展&#xff0c;越来越多的期货投资者选择通过手机端app来进行期货交易&#xff0c;享受随时随地、方便快捷的服务。市面上…

Js获取浏览器地址栏参数

获取浏览器地址参数 //获取浏览器地址栏参数function getQueryString(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var result window.location.search.substr(1).match(reg);if (result ! null) {return unescape(result[2…

VMware 17虚拟Ubuntu 22.04设置共享目录

之前使用VM 17之前的版本虚拟CentOS&#xff0c;设置共享目录非常方便&#xff0c;在CentOS中安装VMware Tools即可。随着CentOS变成上游版本后&#xff0c;转向使用Ubuntu&#xff0c;VM也升级到了17&#xff0c;Ubuntu也升级到了最新的22.04&#xff0c;但是发现共享目录不能…

阿里大牛新产Java面试速成指南,主打就是躺着拿Ofeer

很多粉丝后台留言&#xff0c;Java程序员面临的竞争太激烈了…… 我自己也有实感&#xff0c;多年身处一线互联网公司&#xff0c;虽没有直面过求职跳槽的残酷&#xff0c;但经常担任技术面试考官&#xff0c;对程序员招聘市场的现状很清楚。导致现在激烈竞争的原因不外乎三方面…

sqlite-manage数据库可视化管理uniqpp

一、sqlite-manage介绍 sqlite-manage 是 SQLite 数据库可视化管理插件&#xff0c;更方前期查看和操作SQLite数据库&#xff0c;给APP开发者提供方便&#xff0c;避免重复造轮子。 内置增删改查工具类&#xff0c;可按需全局引用或单独引用。 二、使用sqlite要打开模块选项 三…

java 计算网段范围 分析网段包含关系

目录 一、网段范围 二、思路说明 三、代码 1、将一个ip转为数字 2、转换子网掩码&#xff08;255.255.255.0 转为 24&#xff09; 3、根据 ip 与 掩码 计算最大值和最小值 4、测试 5、完整代码 四、难点讲解 1、转换子网掩码&#xff0c; 例&#xff1a;255.255.25…

【习题之Python篇】习题24——回文

问题描述 2020年春节期间&#xff0c;有一个特殊的日期引起了大家的注意&#xff1a;2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 &#xff0c;恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 是“千年一遇”的特殊日子。对此小明很不认同…

JavaWeb 速通CSS

目录 一、CSS入门 1.基本介绍 : 2.CSS的作用 : 3.CSS的语法 : 二、CSS样式 1.字体颜色&#xff1a; 1 说明 2 演示 2.边框 : 1 说明 2 演示 3.背景颜色 : 1 说明 2 演示 4.字体样式 : 1 说明 2 演示 5.div块居中 : 1 说明 2 演示 6.div文本居中 : 1 说明 2 演示 7.超…

【软件测试】Git详细-获取Git仓库,全网最全一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 官方提供了两种获…

GCC is no longer supported解决方法Android Studio

先说解决办法&#xff1a; 找到 -DANDROID_TOOLCHAINgcc进行删除。 原因是NDK版本过高了&#xff0c;r13b开始&#xff0c;llvm / Clang成为默认工具链&#xff0c;r18b开始删除了gcc。 删掉-DANDROID_TOOLCHAINgcc后&#xff0c;构建系统会默认使用clang。

最大流?费用流?结合二分图?例题

最大流 给出起点&#xff0c;终点&#xff0c;与边&#xff0c;边有最大流量限制&#xff0c;问从起点在不超过边的流量限制的情况下最大能从起点流多少流量到终点 反悔思想&#xff1a;如果我们每次找到一条路径就把这条路径上流量最小的边删去直到没有路径连接起点和终点&am…

飞行动力学 - 第5节-part3-爬升性能随高度的变化趋势 之 基础点摘要

飞行动力学 - 第5节-part3-爬升性能随高度的变化趋势 之 基础点摘要 1. 动力学方程2. 爬升角、爬升率趋势3. 参考资料 1. 动力学方程 回顾下&#xff0c;根据牛顿第一运动定律给出的动力学方程&#xff1a; 2. 爬升角、爬升率趋势 从推导公式的角度&#xff0c;上述趋势需要考…