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>

目录
相关文章
|
3月前
|
数据可视化 前端开发
可视化图表与源代码显示的动态调整
【8月更文挑战第6天】本篇文章通过一个前端图表示例由浅入深,从基本图表显示再到页面源代码的显示到最后实现通过拖动一个可调整大小的分隔符,使用户可以动态地调整图表显示区域和源代码显示区域的大小。全文注释标注,小白也可上手尝试
47 1
可视化图表与源代码显示的动态调整
|
29天前
|
编解码 数据可视化
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
66 0
|
6月前
|
编解码 数据可视化
R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图
R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图
|
定位技术
ArcGIS:地图单位和视图单位(显示单位)的区别?
ArcGIS:地图单位和视图单位(显示单位)的区别?
175 0
|
6月前
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
84 0
|
6月前
|
前端开发 JavaScript
移动端单位自适应的两种方式
移动端单位自适应的两种方式
|
前端开发
前端项目实战贰-兼容条形打印机移动端单位用毫米设定(table版)
前端项目实战贰-兼容条形打印机移动端单位用毫米设定(table版)
83 0
|
数据采集 缓存 异构计算
案例分享:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)
案例分享:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)
案例分享:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)
Echarts堆叠柱状图百分比显示,tooltip展示百分比和数量
需求:将堆叠图每个类型的数据数值进行转换,计算出每一个横向柱状里每个类型占的百分比,然后显示
1547 0
|
数据可视化 前端开发 JavaScript
动态刻度可视化组件实现
之前有个网友问我了一个很有价值的问题, 有关实现数据可视化的问题, 但是这个可视化问题不是一般的柱状图, 折现图之类的,而是不规则刻度的数据可视化.所以笔者思考了一下决定自己实现一个动态刻度可视化组件的方案, 来解决这一类的需求.
299 0