当前位置:首页 > VUE

Vue实现多个echarts排版

2026-02-21 06:58:21VUE

Vue 中实现多个 ECharts 排版的方法

使用 Flex 布局或 Grid 布局

通过 CSS Flex 或 Grid 布局可以灵活控制多个 ECharts 实例的排列方式。Flex 适合一维排列(行或列),Grid 适合二维复杂布局。

<div class="charts-container">
  <div ref="chart1" class="chart-item"></div>
  <div ref="chart2" class="chart-item"></div>
</div>
/* Flex 横向排列 */
.charts-container {
  display: flex;
  gap: 20px; /* 图表间距 */
}
.chart-item {
  flex: 1; /* 等分宽度 */
  height: 400px;
}

/* Grid 网格排列 */
.charts-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* 两列 */
  gap: 20px;
}

动态响应式调整

通过监听窗口变化,动态调整 ECharts 实例的大小:

import { onMounted, onUnmounted } from 'vue';
import * as echarts from 'echarts';

export default {
  setup() {
    const charts = [];

    const initChart = (dom) => {
      const chart = echarts.init(dom);
      chart.setOption({ /* 配置项 */ });
      charts.push(chart);
      return chart;
    };

    const resizeCharts = () => {
      charts.forEach(chart => chart.resize());
    };

    onMounted(() => {
      window.addEventListener('resize', resizeCharts);
    });

    onUnmounted(() => {
      window.removeEventListener('resize', resizeCharts);
    });

    return { initChart };
  }
};

使用 ECharts 的 group 功能

如果需要联动(如鼠标悬停同步高亮),可以通过 group 属性将多个图表绑定到同一组:

const chart1 = echarts.init(document.getElementById('chart1'));
const chart2 = echarts.init(document.getElementById('chart2'));

chart1.setOption({
  group: 'shared', // 同一组名
  /* 其他配置 */
});
chart2.setOption({
  group: 'shared',
  /* 其他配置 */
});

封装可复用的图表组件

创建通用组件便于重复使用:

<!-- EChartWrapper.vue -->
<template>
  <div ref="chartDom" :style="{ width, height }"></div>
</template>

<script>
import { ref, onMounted, onUnmounted } from 'vue';
import * as echarts from 'echarts';

export default {
  props: {
    option: Object,
    width: { type: String, default: '100%' },
    height: { type: String, default: '400px' },
    group: String
  },
  setup(props) {
    const chartDom = ref(null);
    let chartInstance = null;

    const initChart = () => {
      chartInstance = echarts.init(chartDom.value);
      chartInstance.setOption({
        ...props.option,
        group: props.group
      });
    };

    onMounted(initChart);
    onUnmounted(() => {
      if (chartInstance) chartInstance.dispose();
    });

    return { chartDom };
  }
};
</script>

注意事项

  • 确保容器有明确宽高,否则 ECharts 无法渲染。
  • 在组件销毁时调用 dispose() 释放资源。
  • 动态数据更新时需调用 setOption 并传递 notMerge: false 参数。

Vue实现多个echarts排版

标签: 多个Vue
分享给朋友:

相关文章

Vue实现ping

Vue实现ping

Vue实现ping功能的方法 在Vue中实现ping功能,可以通过调用操作系统的ping命令或使用JavaScript的WebSocket等方式。以下是几种常见的方法: 使用Node.js的chi…

Vue实现手机推送

Vue实现手机推送

Vue 中实现手机推送的方法 在 Vue 项目中实现手机推送功能,通常需要结合第三方推送服务(如 Firebase Cloud Messaging、极光推送等)或原生移动端能力(通过 Cordova/…

Vue实现歌曲列表

Vue实现歌曲列表

Vue实现歌曲列表的方法 使用Vue实现歌曲列表可以通过组件化开发、数据绑定和事件处理来完成。以下是具体实现步骤: 数据准备 定义一个包含歌曲信息的数组,每个元素包含歌曲名称、歌手、时长等属性。数据…

Vue 实现左右滑动

Vue 实现左右滑动

Vue 实现左右滑动的方法 使用 touch 事件监听 通过监听 touchstart、touchmove 和 touchend 事件实现基础滑动逻辑。在 Vue 组件中声明这些事件处理函数,计算滑动…

Vue实现ui界面

Vue实现ui界面

Vue实现UI界面的方法 使用Vue CLI创建项目 通过Vue CLI快速搭建项目基础结构,确保开发环境配置完整。安装完成后运行vue create project-name选择预设配置或手动配置特…

Vue实现音乐列表

Vue实现音乐列表

Vue 实现音乐列表的方法 数据准备与绑定 在 Vue 中实现音乐列表,首先需要准备音乐数据。可以通过数组形式存储音乐信息,例如歌曲名称、歌手、封面图片和播放链接。数据可以存储在组件的 data 属性…