eharts图表单位自适配

简介: eharts图表单位自适配

需求描述

以数据的最小值为基准

  • 当最小值超过1分钟时,y轴单位显示“分”
  • 当最小值超过1小时时,y轴单位显示“时”

最终效果

实现思路

在向图表传入数据前,对y轴数据做解析,根据y轴数据最小值的大小,得对应的单位,并对y轴数据根据最终显示的单位进行相应的换算,最终将单位和换算过后的y轴数据,传入图表中显示。

完整范例代码

主页 index.vue

<template>
  <div class="chartBox">
    <Bar1 :data="bar1Data" :unit="bar1Unit" />
  </div>
</template>
<script>
import Bar1 from "@/pages/chartsDemo/chartsLib/bar1.vue";
export default {
  components: { Bar1 },
  mounted() {
    this.bar1Data.xList = [
      "周一",
      "周二",
      "周三",
      "周四",
      "周五",
      "周六",
      "周天",
    ];
    this.bar1Data.yList = [12000, 20000, 15000, 8000, 7000, 11000, 13000];
    this.bar1Unit = this.getUnit(this.bar1Data);
  },
  methods: {
    getUnit(data) {
      let min = Math.min(...data.yList);

      if (min >= 3600) {
        data.yList = data.yList.map((item) => {
          return (item / 3600).toFixed(2);
        });
        return "时";
      } else if (min >= 60) {
        data.yList = data.yList.map((item) => {
          return (item / 60).toFixed(2);
        });

        return "分";
      } else {
        return "秒";
      }
    },
  },
  data() {
    return {
      bar1Data: {},
      bar1Unit: "",
    };
  },
};
</script>
<style scoped>
.chartBox {
  height: 300px;
  width: 600px;
}
</style>


图表组件

src\pages\chartsDemo\chartsLib\bar1.vue

<template>
  <div style="height: 100%;width: 100%" ref="myChart"></div>
</template>

<script>
import echarts from "echarts";

export default {
  props: {
    data: Object,
    unit: String,
  },
  mounted() {
    this.$nextTick(() => {
      this.drawChart();
    });
  },
  methods: {
    drawChart() {
      let option = {
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow",
          },
          backgroundColor: "rgba(9, 24, 48, 0.5)",
          borderColor: "rgba(75, 253, 238, 0.4)",
          textStyle: {
            color: "#fff",
          },
        },
        legend: {
          data: ["阅读时长"],
          right: 60,
          textStyle: {},
        },

        xAxis: {
          type: "category",
          data: this.data.xList,
        },
        yAxis: {
          type: "value",
          name: this.unit,
          nameLocation: "end", //坐标位置,支持start,end,middle
          nameTextStyle: {
            padding: [0, 0, 0, -30], //调整距离坐标位置的距离
          },
        },
        series: [
          {
            name: "阅读时长",
            data: this.data.yList,
            type: "bar",
          },
        ],
      };

      // 2.创建图表
      let chart = echarts.init(this.$refs.myChart);

      // 3,导入图表的配置
      chart.setOption(option);

      // 4添加窗口大小改变监听事件,当窗口大小改变时,图表会重新绘制,自适应窗口大小
      window.addEventListener("resize", function() {
        chart.resize();
      });
    },
  },
};
</script>

<style scoped></style>

目录
相关文章
|
2月前
|
数据可视化 前端开发
可视化图表与源代码显示的动态调整
【8月更文挑战第6天】本篇文章通过一个前端图表示例由浅入深,从基本图表显示再到页面源代码的显示到最后实现通过拖动一个可调整大小的分隔符,使用户可以动态地调整图表显示区域和源代码显示区域的大小。全文注释标注,小白也可上手尝试
41 1
可视化图表与源代码显示的动态调整
|
5月前
|
编解码 数据可视化
R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图
R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图
|
5月前
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
69 0
|
定位技术
ArcGIS:地图单位和视图单位(显示单位)的区别?
ArcGIS:地图单位和视图单位(显示单位)的区别?
147 0
|
5月前
|
前端开发 JavaScript
移动端单位自适应的两种方式
移动端单位自适应的两种方式
|
数据可视化
获取页面的可视化高度和宽度
获取页面的可视化高度和宽度
42 0
|
前端开发
前端项目实战肆-兼容条形打印机移动端单位用毫米设定(td版优化)
前端项目实战肆-兼容条形打印机移动端单位用毫米设定(td版优化)
84 0
|
前端开发
前端项目实战贰-兼容条形打印机移动端单位用毫米设定(table版)
前端项目实战贰-兼容条形打印机移动端单位用毫米设定(table版)
81 0
|
数据可视化 Python
基础 | Pyecharts 动态时序图(时间线轮播图各参数配置)
基础 | Pyecharts 动态时序图(时间线轮播图各参数配置)
Echarts堆叠柱状图百分比显示,tooltip展示百分比和数量
需求:将堆叠图每个类型的数据数值进行转换,计算出每一个横向柱状里每个类型占的百分比,然后显示
1524 0