Vue3+Echarts:堆积柱状图的绘制

12 篇文章 1 订阅

一、需求

  • 在Vue3项目中,想用Echarts来绘制堆积柱状图,去展示最近一周APP在不同渠道的登录人数
  • 效果如下:
    在这里插入图片描述

二、实现

(关于Echarts的下载安装以及图表的样式设计,此处不展开!)

1、Templates部分
<template>
  <div class="login">
    <div class="chart" id="bar"></div>
  </div>
</template>
2、Script部分
(1)总体逻辑

在这里插入图片描述

(2)图表数据

图表想要展示的指标是:最近一周APP在不同渠道的登陆人数,包括ios端、android端、网页端

  • 使用ref来声明数据:
const dataAll = ref();
  • 数据格式如下:
dataAll.value = [
  {
    id: 1,
    option1: "登录人数",
    data: [
      [12000, 13200, 10100, 13400, 9000, 23000, 21000],
      [22000, 18200, 19100, 23400, 29000, 33000, 31000],
      [22000, 18200, 19100, 23400, 29000, 33000, 31000],
    ],
  }
];
  • echarts核心代码

    • 每个柱子包含三部分的数据,分别是android端的登录人数、ios端的登录人数以及pc端的登录人数;
    • 因此series包含三个对象,分别代表三个渠道;
    • 每个对象里面是每个渠道最近7天的登录人数

在这里插入图片描述

  • echarts部分的完整代码:
onMounted(() => {
 let myChart = $echarts.init(document.getElementById("bar"));
 myChart.setOption({
   color: ["#f88c68", "#688CF8", "#68D4F8", "#8C68F8"],
   // 图表标题
   title: {
     text: "APP登录",
     textStyle: {
       //文字样式
       color: "#fff",
       fontSize: 15,
     },
     // 标题位置
     left: 0,
     top: 0,
   },

   // 网格grid:控制直角坐标系的布局和大小
   grid: {
     left: "12%",
     right: "12%",
     bottom: "10%",
     // containLabel: true
   },

   // 提示框
   tooltip: {
     trigger: "axis",
     axisPointer: {
       // 坐标轴指示器,坐标轴触发有效
       type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
     },
   },

   // 工具栏
   toolbox: {
     feature: {
       saveAsImage: {}, //导出图片
     },
   },

   xAxis: {
     name: "日期", //x轴名称
     type: "category",
     data: ["12-9", "12-10", "12-11", "12-12", "12-13", "12-14", "12-15"],
     // 去除刻度线
     axisTick: {
       alignWithLabel: true,
     },
     // 对横轴刻度标签进行处理
     axisLabel: {
       //修改坐标系字体颜色
       // show: true,
       textStyle: {
         color: "#fff",
       },
       interval: 0,
       margin: 10,
       fontSize: "12",
     },
     axisLine: {
       show: false,
     },
   },

   yAxis: {
     name: "人", //x轴名称
     type: "value",
     splitLine: {
       show: false, //去掉折线图中的横线
     },
     // 去除刻度线
     axisTick: {
       show: false,
     },

     // 对横轴刻度标签进行处理
     axisLabel: {
       //修改坐标系字体颜色
       show: true,
       textStyle: {
         color: "#fff",
       },
       interval: 0,
       margin: 10,
     },
   },

   series: [
     {
       name: "Android:",
       type: "bar",
       stack: "stack",
       barWidth: "35%",
       data: data.value[0],
     },
     {
       name: "iOS:",
       type: "bar",
       stack: "stack",
       barWidth: "35%",
       data: data.value[1],
     },
     {
       name: "Web:",
       type: "bar",
       stack: "stack",
       barWidth: "35%",
       data: data.value[2],
     },
   ],
 });
});
3、效果如下:

在这里插入图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是使用Vue2和Echarts实现立体柱状图的步骤: 1. 首先,需要在Vue项目中安装Echarts。可以使用npm或yarn进行安装,命令如下: ``` npm install echarts --save ``` 或者 ``` yarn add echarts ``` 2. 在Vue组件中引入Echarts,并创建一个Echarts实例: ```javascript import echarts from 'echarts' export default { data() { return { chartData: null } }, mounted() { this.initChart() }, methods: { initChart() { const chartDom = this.$refs.chart const myChart = echarts.init(chartDom) this.chartData = myChart } } } ``` 3. 在模板中添加一个div元素,用于渲染Echarts图表: ```html <template> <div class="chart-container"> <div ref="chart" class="chart"></div> </div> </template> ``` 4. 在Vue组件的方法中,使用Echarts的API创建立体柱状图: ```javascript const option = { tooltip: {}, visualMap: { max: 20, inRange: { color: ['#e0ffff', '#006edd'] } }, xAxis3D: { type: 'category', data: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] }, yAxis3D: { type: 'category', data: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] }, zAxis3D: { type: 'value' }, grid3D: { boxWidth: 200, boxDepth: 80, viewControl: { // projection: 'orthographic' }, light: { main: { intensity: 1.2, shadow: true }, ambient: { intensity: 0.3 } } }, series: [{ type: 'bar3D', data: [ ['A', 'Monday', 10], ['B', 'Monday', 8], ['C', 'Monday', 7], ['D', 'Monday', 6], ['E', 'Monday', 5], ['F', 'Monday', 4], ['G', 'Monday', 3], ['H', 'Monday', 2], ['A', 'Tuesday', 3], ['B', 'Tuesday', 5], ['C', 'Tuesday', 6], ['D', 'Tuesday', 7], ['E', 'Tuesday', 8], ['F', 'Tuesday', 9], ['G', 'Tuesday', 10], ['H', 'Tuesday', 11], ['A', 'Wednesday', 12], ['B', 'Wednesday', 10], ['C', 'Wednesday', 9], ['D', 'Wednesday', 8], ['E', 'Wednesday', 7], ['F', 'Wednesday', 6], ['G', 'Wednesday', 5], ['H', 'Wednesday', 4], ['A', 'Thursday', 5], ['B', 'Thursday', 7], ['C', 'Thursday', 8], ['D', 'Thursday', 9], ['E', 'Thursday', 10], ['F', 'Thursday', 11], ['G', 'Thursday', 12], ['H', 'Thursday', 13], ['A', 'Friday', 15], ['B', 'Friday', 13], ['C', 'Friday', 12], ['D', 'Friday', 11], ['E', 'Friday', 10], ['F', 'Friday', 9], ['G', 'Friday', 8], ['H', 'Friday', 7], ['A', 'Saturday', 4], ['B', 'Saturday', 6], ['C', 'Saturday', 7], ['D', 'Saturday', 8], ['E', 'Saturday', 9], ['F', 'Saturday', 10], ['G', 'Saturday', 11], ['H', 'Saturday', 12], ['A', 'Sunday', 16], ['B', 'Sunday', 14], ['C', 'Sunday', 13], ['D', 'Sunday', 12], ['E', 'Sunday', 11], ['F', 'Sunday', 10], ['G', 'Sunday', 9], ['H', 'Sunday', 8] ], shading: 'lambert', label: { textStyle: { fontSize: 16, borderWidth: 1 } }, itemStyle: { opacity: 0.8 } }] } this.chartData.setOption(option) ``` 这里的option是一个包含Echarts图表配置的对象,其中包括了x轴、y轴、z轴、数据等信息。可以根据实际需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值