Vue3 热力图

效果图:

配置

html 复制代码
<template>
  <v-chart ref="vChartRef" :option="option"></v-chart>
</template>

<script setup lang="ts">
import { ref, reactive } from "vue";
import VChart from "vue-echarts";
import { use } from "echarts/core";
import { CanvasRenderer } from "echarts/renderers";
import { HeatmapChart } from "echarts/charts";
import {
  DatasetComponent,
  GridComponent,
  TooltipComponent,
  LegendComponent,
  VisualMapComponent,
} from "echarts/components";
import cloneDeep from "lodash/cloneDeep";
import { onMounted } from "vue";

use([
  DatasetComponent,
  CanvasRenderer,
  HeatmapChart,
  GridComponent,
  TooltipComponent,
  LegendComponent,
  VisualMapComponent,
]);
// 获取图表实例
const vChartRef = ref();
const seriesItem = ref<any>({
  type: "heatmap",
  label: {
    show: true,
  },
  emphasis: {
    itemStyle: {
      borderColor: "#333",
      borderWidth: 1,
      shadowBlur: 10,
      shadowColor: "rgba(0, 0, 0, 0.5)",
    },
  },
  progressive: 1000,
  animation: false,
  data: <any>[],
});
const getSeries = () => {
  let series: any = [];
  const values = chartData.value;
  //系列模板
  let item: any = cloneDeep(seriesItem.value);
  item.data = values.seriesData;
  series.push(item);
  return series;
};
const option = reactive({
  tooltip: {
    position: "top",
  },
  xAxis: {
    data: <any>[],
    axisLabel: {
      interval: 1,
    },
  },
  yAxis: {
    type: "category",
    data: <any>[],
  },
  visualMap: {
    show: true,
    min: 0,
    max: 10,
    itemWidth: 20,
    itemHeight: 140,
    calculable: true,
    orient: "horizontal",
    inRange: {
      // 高 -> 低
      color: ["#4661c2", "#263253"],
    },
  },
  series: <any>[],
});

onMounted(() => {
  option.xAxis.data = chartData.value.xAxis;
  option.yAxis.data = chartData.value.yAxis;
  option.series = getSeries();
});
</script>

json

javascript 复制代码
const chartData = ref<any>({
  xAxis: [
    "12a",
    "1a",
    "2a",
    "3a",
    "4a",
    "5a",
    "6a",
    "7a",
    "8a",
    "9a",
    "10a",
    "11a",
    "12p",
    "1p",
    "2p",
    "3p",
    "4p",
    "5p",
    "6p",
    "7p",
    "8p",
    "9p",
    "10p",
    "11p",
  ],
  yAxis: [
    "Saturday",
    "Friday",
    "Thursday",
    "Wednesday",
    "Tuesday",
    "Monday",
    "Sunday",
  ],
  seriesData: [
    [0, 0, 5],
    [1, 0, 1],
    [2, 0, "-"],
    [3, 0, "-"],
    [4, 0, "-"],
    [5, 0, "-"],
    [6, 0, "-"],
    [7, 0, "-"],
    [8, 0, "-"],
    [9, 0, "-"],
    [10, 0, "-"],
    [11, 0, 2],
    [12, 0, 4],
    [13, 0, 1],
    [14, 0, 1],
    [15, 0, 3],
    [16, 0, 4],
    [17, 0, 6],
    [18, 0, 4],
    [19, 0, 4],
    [20, 0, 3],
    [21, 0, 3],
    [22, 0, 2],
    [23, 0, 5],
    [0, 1, 7],
    [1, 1, "-"],
    [2, 1, "-"],
    [3, 1, "-"],
    [4, 1, "-"],
    [5, 1, "-"],
    [6, 1, "-"],
    [7, 1, "-"],
    [8, 1, "-"],
    [9, 1, "-"],
    [10, 1, 5],
    [11, 1, 2],
    [12, 1, 2],
    [13, 1, 6],
    [14, 1, 9],
    [15, 1, 11],
    [16, 1, 6],
    [17, 1, 7],
    [18, 1, 8],
    [19, 1, 12],
    [20, 1, 5],
    [21, 1, 5],
    [22, 1, 7],
    [23, 1, 2],
    [0, 2, 1],
    [1, 2, 1],
    [2, 2, "-"],
    [3, 2, "-"],
    [4, 2, "-"],
    [5, 2, "-"],
    [6, 2, "-"],
    [7, 2, "-"],
    [8, 2, "-"],
    [9, 2, "-"],
    [10, 2, 3],
    [11, 2, 2],
    [12, 2, 1],
    [13, 2, 9],
    [14, 2, 8],
    [15, 2, 10],
    [16, 2, 6],
    [17, 2, 5],
    [18, 2, 5],
    [19, 2, 5],
    [20, 2, 7],
    [21, 2, 4],
    [22, 2, 2],
    [23, 2, 4],
    [0, 3, 7],
    [1, 3, 3],
    [2, 3, "-"],
    [3, 3, "-"],
    [4, 3, "-"],
    [5, 3, "-"],
    [6, 3, "-"],
    [7, 3, "-"],
    [8, 3, 1],
    [9, 3, "-"],
    [10, 3, 5],
    [11, 3, 4],
    [12, 3, 7],
    [13, 3, 14],
    [14, 3, 13],
    [15, 3, 12],
    [16, 3, 9],
    [17, 3, 5],
    [18, 3, 5],
    [19, 3, 10],
    [20, 3, 6],
    [21, 3, 4],
    [22, 3, 4],
    [23, 3, 1],
    [0, 4, 1],
    [1, 4, 3],
    [2, 4, "-"],
    [3, 4, "-"],
    [4, 4, "-"],
    [5, 4, 1],
    [6, 4, "-"],
    [7, 4, "-"],
    [8, 4, "-"],
    [9, 4, 2],
    [10, 4, 4],
    [11, 4, 4],
    [12, 4, 2],
    [13, 4, 4],
    [14, 4, 4],
    [15, 4, 14],
    [16, 4, 12],
    [17, 4, 1],
    [18, 4, 8],
    [19, 4, 5],
    [20, 4, 3],
    [21, 4, 7],
    [22, 4, 3],
    [23, 4, "-"],
    [0, 5, 2],
    [1, 5, 1],
    [2, 5, "-"],
    [3, 5, 3],
    [4, 5, "-"],
    [5, 5, "-"],
    [6, 5, "-"],
    [7, 5, "-"],
    [8, 5, 2],
    [9, 5, "-"],
    [10, 5, 4],
    [11, 5, 1],
    [12, 5, 5],
    [13, 5, 10],
    [14, 5, 5],
    [15, 5, 7],
    [16, 5, 11],
    [17, 5, 6],
    [18, 5, "-"],
    [19, 5, 5],
    [20, 5, 3],
    [21, 5, 4],
    [22, 5, 2],
    [23, 5, "-"],
    [0, 6, 1],
    [1, 6, "-"],
    [2, 6, "-"],
    [3, 6, "-"],
    [4, 6, "-"],
    [5, 6, "-"],
    [6, 6, "-"],
    [7, 6, "-"],
    [8, 6, "-"],
    [9, 6, "-"],
    [10, 6, 1],
    [11, 6, "-"],
    [12, 6, 2],
    [13, 6, 1],
    [14, 6, 3],
    [15, 6, 4],
    [16, 6, "-"],
    [17, 6, "-"],
    [18, 6, "-"],
    [19, 6, "-"],
    [20, 6, 1],
    [21, 6, 2],
    [22, 6, 2],
    [23, 6, 6],
  ],
});
相关推荐
步十人21 小时前
【Vue3】前置知识简单概述(包括ES6核心语法,模块化ESM以及npm基础)
arcgis·npm·vue·es6
有梦想的程序星空1 天前
【环境配置】Vue3项目离线化本地部署echarts全攻略
前端·javascript·vue·echarts
Highcharts.js2 天前
通过CSS变量实现图表色彩与逻辑解耦、图表主题统一|Highcharts Palette 详解
c++·echarts·highcharts·可视化开发·palette·styledmode·图表样式
向日的葵0062 天前
vue路由(二)
前端·javascript·vue.js·vue
小妖6663 天前
Hydration completed but contains mismatches
javascript·vue·vuepress
lianyinghhh3 天前
FlowGame 从零上手:开源 AI 工作流编排框架与 Vue 3 接入实战
python·低代码·开源·vue·rag·flowgame·ai工作流编排
爱编程的小金3 天前
告别手写分页逻辑:usePagination 从 50 行到 3 行
javascript·vue·前端分页·alova·usepagination
ok406lhq3 天前
用 MonkeyCode 8 小时搭建自动化内容站:AI Coding 平台实战复盘
ci/cd·vue·ai编程·自动化部署·monkeycode
brycegao3214 天前
Tauri2+Vue3+Ollama 实战|依托 AI 协同开发全离线隐私记账桌面软件(开源)
人工智能·开源·vue·ai编程·tauri·ollama·桌面开发
向日的葵0064 天前
快速了解vue中的路由如何实现(路由一)
前端·vue.js·vue·路由