当前位置: 首页 > news >正文

electron中显示echarts

🔧 一、基础环境配置
  1. 初始化项目

    npm init -y
    npm install --save-dev electron
    
  2. 安装ECharts

    npm install echarts
    
  3. 引入方式

    • 渲染进程直接调用
      // renderer.js
      const echarts = require('echarts');
      
    • 框架集成方案
      • Vue3:使用vue-echarts v6+
      • React:选用echarts-for-react

🚀 二、核心实现步骤
▎1. 创建图表容器
<div id="chart" style="width: 800px; height: 600px;"></div>
▎2. 初始化与渲染基础图表
const container = document.getElementById('chart');
const myChart = echarts.init(container, null, { devicePixelRatio: 2, // 高清屏适配renderer: 'canvas'   // 默认渲染器,可省略
});// 柱状图示例配置
const option = {tooltip: { trigger: 'axis' },xAxis: { data: ['A', 'B', 'C', 'D', 'E'] },yAxis: { type: 'value' },series: [{ type: 'bar',data: [120, 200, 150, 80, 70],itemStyle: { borderRadius: 5 } // 柱体圆角}]
};
myChart.setOption(option);
▎3. 动态数据更新
// 实时更新数据
setInterval(() => {const newData = Array(5).fill(0).map(() => Math.floor(Math.random() * 200));myChart.setOption({ series: [{ data: newData }] });
}, 1000);

⚠️ 三、高频问题解决方案
问题现象解决方案
echarts is not defined检查渲染进程是否启用nodeIntegration: true,Vue/React需用import * as echarts
图表模糊初始化时配置devicePixelRatio: window.devicePixelRatio
窗口缩放失真监听resize事件并调用myChart.resize()
大数据卡顿启用增量渲染:series: [{ progressive: 1000 }] (ECharts 5.2+)

🎨 四、进阶场景配置
▎1. 主题切换(亮色/暗色)
// 暗色主题示例
myChart.dispose(); // 销毁旧实例
myChart = echarts.init(container, 'dark'); // 应用内置暗色主题
myChart.setOption(option);
▎2. 原生菜单交互图表
// 主进程发送图表类型
ipcMain.on('change-chart', (_, type) => {mainWindow.webContents.send('update-chart', type);
});// 渲染进程接收并更新
ipcRenderer.on('update-chart', (_, type) => {myChart.setOption({ series: [{ type }] }); // 动态切换折线/柱状等
});
▎3. 响应式布局技巧
/* CSS自适应容器 */
#chart { width: 100%; height: 70vh; /* 视口高度占比 */
}

💎 最佳实践总结
  • 架构推荐:Vue3 + vue-echarts组件库 + Electron
  • 调试工具
    • 开启webPreferences: { devTools: true }
    • 使用ECharts Inspector插件检查配置
  • 打包优化
    "build": {"files": ["!node_modules/echarts/src/**"] // 排除源码减小体积
    }
    

相关文章:

  • 【NLP】自然语言项目设计03
  • 关于ubuntu 20.04系统安装分区和重复登录无法加载桌面的问题解决
  • 【数据标注】事件标注1
  • Vue工程化实现约定式路由自动注册
  • Go开发工程师-Golang基础知识篇
  • 数据结构:最小生成树—Prim(普里姆)与Kruskal(克鲁斯卡尔)算法
  • 什么是哈希链(Hash Chain)?
  • Redis 实现分布式锁
  • 分布式集群压测
  • 第8章-财务数据
  • VR训练美国服务器:高性能解决方案与优化指南
  • 培养你的眼力 - 摄影构图
  • Python 中 `for` 循环与 `while` 循环的性能差异:深度剖析
  • 思维提升篇-数学抽象与计算机实现
  • 从零开始构建RAG(检索增强生成)
  • C# 委托(为委托添加方法和从委托移除方法)
  • Excel限制编辑:保护表格的实用功能
  • 【C#】使用电脑的GPU与CPU的区别
  • 鸿蒙5:其他布局容器
  • 【Redis原理】Redis分布式缓存——主从复制、哨兵机制与Redis Cluster