数据可视化交互式图表与大屏展示大家好我是欧阳瑞Rich Own。今天想和大家聊聊数据可视化这个重要话题。作为一个全栈开发者数据可视化是将数据转化为有意义信息的关键。今天就来分享一下交互式图表和大屏展示的实战经验。数据可视化概述可视化类型类型说明适用场景折线图展示趋势变化时间序列数据柱状图对比数据大小分类数据比较饼图展示占比关系比例数据散点图展示相关性数据分布热力图展示密度分布矩阵数据设计原则清晰性 → 易于理解 准确性 → 数据准确 美观性 → 视觉吸引力 交互性 → 支持用户交互ECharts实战基础配置!DOCTYPE html html head script srchttps://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js/script /head body div idchart stylewidth: 600px; height: 400px;/div script const chart echarts.init(document.getElementById(chart)); const option { title: { text: 月度销售额 }, xAxis: { type: category, data: [1月, 2月, 3月, 4月, 5月, 6月] }, yAxis: { type: value }, series: [{ name: 销售额, type: bar, data: [1200, 1500, 1800, 2100, 2400, 2800] }] }; chart.setOption(option); /script /body /html交互式图表const option { title: { text: 销售趋势 }, tooltip: { trigger: axis, formatter: {b}br/{a}: {c}万元 }, legend: { data: [销售额, 订单数] }, xAxis: { type: category, data: [1月, 2月, 3月, 4月, 5月, 6月] }, yAxis: [ { type: value, name: 销售额(万) }, { type: value, name: 订单数 } ], series: [ { name: 销售额, type: line, data: [1200, 1500, 1800, 2100, 2400, 2800] }, { name: 订单数, type: bar, yAxisIndex: 1, data: [800, 950, 1100, 1250, 1400, 1600] } ] };D3.js进阶创建交互式图表const data [4, 8, 15, 16, 23, 42]; const svg d3.select(svg); const width svg.attr(width); const height svg.attr(height); const padding 20; const xScale d3.scaleLinear() .domain([0, d3.max(data)]) .range([padding, width - padding]); const yScale d3.scaleBand() .domain(data.map((d, i) i)) .range([padding, height - padding]) .padding(0.1); // 绘制矩形 svg.selectAll(rect) .data(data) .enter() .append(rect) .attr(x, padding) .attr(y, (d, i) yScale(i)) .attr(width, (d) xScale(d) - padding) .attr(height, yScale.bandwidth()) .attr(fill, steelblue) .on(mouseenter, function() { d3.select(this).attr(fill, orange); }) .on(mouseleave, function() { d3.select(this).attr(fill, steelblue); }); // 添加标签 svg.selectAll(text) .data(data) .enter() .append(text) .attr(x, (d) xScale(d) 5) .attr(y, (d, i) yScale(i) yScale.bandwidth() / 2) .attr(alignment-baseline, middle) .text((d) d);大屏展示全屏布局* { margin: 0; padding: 0; box-sizing: border-box; } body { width: 100vw; height: 100vh; overflow: hidden; background: #0a0e17; } .dashboard { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); gap: 20px; padding: 20px; height: 100%; } .card { background: linear-gradient(135deg, #1a1f35 0%, #0f1420 100%); border-radius: 12px; padding: 20px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); }动态数据更新// 模拟实时数据 setInterval(() { const newData data.map(() Math.floor(Math.random() * 50)); chart.setOption({ series: [{ data: newData }] }); }, 2000);实战案例实时监控大屏!DOCTYPE html html head script srchttps://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js/script style body { margin: 0; background: #0a0e17; } #dashboard { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; height: 100vh; gap: 20px; padding: 20px; } .chart { background: #1a1f35; border-radius: 12px; } #main-chart { grid-column: 1; grid-row: 1 / 3; } /style /head body div iddashboard div idmain-chart classchart/div div idstats-chart classchart/div div idrealtime-chart classchart/div /div script const mainChart echarts.init(document.getElementById(main-chart)); const statsChart echarts.init(document.getElementById(stats-chart)); const realtimeChart echarts.init(document.getElementById(realtime-chart)); // 主图表配置 mainChart.setOption({ title: { text: 业务概览, textStyle: { color: #fff } }, tooltip: { trigger: axis }, grid: { left: 3%, right: 4%, bottom: 3%, containLabel: true }, xAxis: { type: category, data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun], axisLabel: { color: #fff } }, yAxis: { type: value, axisLabel: { color: #fff } }, series: [{ type: line, data: [1200, 1320, 1010, 1340, 1900, 2300, 2100], lineStyle: { color: #5470c6 } }] }); // 定期更新 setInterval(() { const newData [1200 Math.random() * 1000, 1320 Math.random() * 1000, 1010 Math.random() * 1000, 1340 Math.random() * 1000, 1900 Math.random() * 1000, 2300 Math.random() * 1000, 2100 Math.random() * 1000]; mainChart.setOption({ series: [{ data: newData }] }); }, 3000); /script /body /html最佳实践1. 响应式设计// 响应式图表 window.addEventListener(resize, () { chart.resize(); });2. 数据标签const option { series: [{ type: bar, data: [1200, 1500, 1800], label: { show: true, position: top, formatter: {c}万 } }] };总结数据可视化是将数据转化为洞察力的强大工具。通过ECharts和D3.js可以创建美观、交互性强的数据可视化图表。我的鬃狮蜥Hash对数据可视化也有自己的理解——它总是能从环境中识别出蟋蟀的位置这也许就是自然界的数据可视化吧如果你对数据可视化有任何问题欢迎留言交流我是欧阳瑞极客之路永无止境技术栈ECharts · D3.js · 数据可视化
数据可视化:交互式图表与大屏展示
发布时间:2026/5/24 1:19:22
数据可视化交互式图表与大屏展示大家好我是欧阳瑞Rich Own。今天想和大家聊聊数据可视化这个重要话题。作为一个全栈开发者数据可视化是将数据转化为有意义信息的关键。今天就来分享一下交互式图表和大屏展示的实战经验。数据可视化概述可视化类型类型说明适用场景折线图展示趋势变化时间序列数据柱状图对比数据大小分类数据比较饼图展示占比关系比例数据散点图展示相关性数据分布热力图展示密度分布矩阵数据设计原则清晰性 → 易于理解 准确性 → 数据准确 美观性 → 视觉吸引力 交互性 → 支持用户交互ECharts实战基础配置!DOCTYPE html html head script srchttps://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js/script /head body div idchart stylewidth: 600px; height: 400px;/div script const chart echarts.init(document.getElementById(chart)); const option { title: { text: 月度销售额 }, xAxis: { type: category, data: [1月, 2月, 3月, 4月, 5月, 6月] }, yAxis: { type: value }, series: [{ name: 销售额, type: bar, data: [1200, 1500, 1800, 2100, 2400, 2800] }] }; chart.setOption(option); /script /body /html交互式图表const option { title: { text: 销售趋势 }, tooltip: { trigger: axis, formatter: {b}br/{a}: {c}万元 }, legend: { data: [销售额, 订单数] }, xAxis: { type: category, data: [1月, 2月, 3月, 4月, 5月, 6月] }, yAxis: [ { type: value, name: 销售额(万) }, { type: value, name: 订单数 } ], series: [ { name: 销售额, type: line, data: [1200, 1500, 1800, 2100, 2400, 2800] }, { name: 订单数, type: bar, yAxisIndex: 1, data: [800, 950, 1100, 1250, 1400, 1600] } ] };D3.js进阶创建交互式图表const data [4, 8, 15, 16, 23, 42]; const svg d3.select(svg); const width svg.attr(width); const height svg.attr(height); const padding 20; const xScale d3.scaleLinear() .domain([0, d3.max(data)]) .range([padding, width - padding]); const yScale d3.scaleBand() .domain(data.map((d, i) i)) .range([padding, height - padding]) .padding(0.1); // 绘制矩形 svg.selectAll(rect) .data(data) .enter() .append(rect) .attr(x, padding) .attr(y, (d, i) yScale(i)) .attr(width, (d) xScale(d) - padding) .attr(height, yScale.bandwidth()) .attr(fill, steelblue) .on(mouseenter, function() { d3.select(this).attr(fill, orange); }) .on(mouseleave, function() { d3.select(this).attr(fill, steelblue); }); // 添加标签 svg.selectAll(text) .data(data) .enter() .append(text) .attr(x, (d) xScale(d) 5) .attr(y, (d, i) yScale(i) yScale.bandwidth() / 2) .attr(alignment-baseline, middle) .text((d) d);大屏展示全屏布局* { margin: 0; padding: 0; box-sizing: border-box; } body { width: 100vw; height: 100vh; overflow: hidden; background: #0a0e17; } .dashboard { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); gap: 20px; padding: 20px; height: 100%; } .card { background: linear-gradient(135deg, #1a1f35 0%, #0f1420 100%); border-radius: 12px; padding: 20px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); }动态数据更新// 模拟实时数据 setInterval(() { const newData data.map(() Math.floor(Math.random() * 50)); chart.setOption({ series: [{ data: newData }] }); }, 2000);实战案例实时监控大屏!DOCTYPE html html head script srchttps://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js/script style body { margin: 0; background: #0a0e17; } #dashboard { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; height: 100vh; gap: 20px; padding: 20px; } .chart { background: #1a1f35; border-radius: 12px; } #main-chart { grid-column: 1; grid-row: 1 / 3; } /style /head body div iddashboard div idmain-chart classchart/div div idstats-chart classchart/div div idrealtime-chart classchart/div /div script const mainChart echarts.init(document.getElementById(main-chart)); const statsChart echarts.init(document.getElementById(stats-chart)); const realtimeChart echarts.init(document.getElementById(realtime-chart)); // 主图表配置 mainChart.setOption({ title: { text: 业务概览, textStyle: { color: #fff } }, tooltip: { trigger: axis }, grid: { left: 3%, right: 4%, bottom: 3%, containLabel: true }, xAxis: { type: category, data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun], axisLabel: { color: #fff } }, yAxis: { type: value, axisLabel: { color: #fff } }, series: [{ type: line, data: [1200, 1320, 1010, 1340, 1900, 2300, 2100], lineStyle: { color: #5470c6 } }] }); // 定期更新 setInterval(() { const newData [1200 Math.random() * 1000, 1320 Math.random() * 1000, 1010 Math.random() * 1000, 1340 Math.random() * 1000, 1900 Math.random() * 1000, 2300 Math.random() * 1000, 2100 Math.random() * 1000]; mainChart.setOption({ series: [{ data: newData }] }); }, 3000); /script /body /html最佳实践1. 响应式设计// 响应式图表 window.addEventListener(resize, () { chart.resize(); });2. 数据标签const option { series: [{ type: bar, data: [1200, 1500, 1800], label: { show: true, position: top, formatter: {c}万 } }] };总结数据可视化是将数据转化为洞察力的强大工具。通过ECharts和D3.js可以创建美观、交互性强的数据可视化图表。我的鬃狮蜥Hash对数据可视化也有自己的理解——它总是能从环境中识别出蟋蟀的位置这也许就是自然界的数据可视化吧如果你对数据可视化有任何问题欢迎留言交流我是欧阳瑞极客之路永无止境技术栈ECharts · D3.js · 数据可视化