Apache ECharts 实现散点图与边缘直方图的组合展示
2025-04-30 14:03:37作者:瞿蔚英Wynne
echarts
Apache ECharts is a powerful, interactive charting and data visualization library for browser
在数据可视化领域,散点图(Scatter Plot)与边缘直方图(Marginal Histogram)的组合是一种经典的多维度数据展示方式。这种组合能够同时呈现数据的分布特征和变量间的相关性,广泛应用于统计分析、机器学习等领域。Apache ECharts 作为一款强大的可视化库,同样支持这种高级图表组合的实现。
核心思路
实现散点图与边缘直方图组合的关键在于多坐标系(Grid)的协同控制。通过将主坐标系(散点图)与辅助坐标系(直方图)按比例布局,即可形成边缘直方图的视觉效果。具体技术要点如下:
-
坐标系划分
使用grid配置项定义多个矩形区域:- 主
grid用于散点图,占据中心大部分区域 - 辅助
grid用于直方图,紧贴主坐标系的边缘(如顶部/右侧)
- 主
-
数据映射同步
需确保直方图的 bin 划分与散点图的坐标轴刻度对齐,这需要通过:- 手动计算直方图分箱(binning)
- 或使用
echarts-stat扩展的 histogram 转换功能
-
视觉样式协调
通过统一配色、隐藏冗余坐标轴等方式,使组合图表呈现整体性
实现示例
option = {
grid: [
// 主坐标系(散点图)
{
right: '15%',
top: '15%',
width: '70%',
height: '70%'
},
// 顶部直方图
{
right: '15%',
top: '5%',
width: '70%',
height: '10%',
containLabel: true
},
// 右侧直方图
{
right: '5%',
top: '15%',
width: '10%',
height: '70%',
containLabel: true
}
],
xAxis: [
// 散点图X轴
{ gridIndex: 0, ... },
// 顶部直方图X轴(与散点图同步)
{ gridIndex: 1, show: false }
],
yAxis: [
// 散点图Y轴
{ gridIndex: 0, ... },
// 右侧直方图Y轴
{ gridIndex: 2, show: false }
],
series: [
// 散点图系列
{ type: 'scatter', xAxisIndex: 0, yAxisIndex: 0, ... },
// 顶部直方图系列
{ type: 'bar', xAxisIndex: 1, yAxisIndex: 1, ... },
// 右侧直方图系列
{ type: 'bar', xAxisIndex: 2, yAxisIndex: 2, ... }
]
}
进阶技巧
-
动态响应
通过resize事件监听器自动调整多grid的尺寸比例,确保在不同屏幕尺寸下的显示效果 -
交互联动
利用connect功能实现刷选(brush)等高阶交互:echarts.connect([scatterChart, histChart1, histChart2]); -
性能优化
对于大数据量场景,建议:- 对直方图数据预聚合
- 启用散点图的渐进渲染(progressive)
- 使用 WebGL 渲染器(svg-renderer)
适用场景
这种组合图表特别适合以下分析场景:
- 探索性数据分析(EDA)中的变量关系检验
- 聚类结果的可视化验证
- 数据质量检查(离群值识别等)
通过 Apache ECharts 强大的配置能力,开发者可以灵活调整各部分的显示比例、交互方式等参数,打造专业级的数据分析仪表盘。这种实现方式既保持了代码的简洁性,又提供了充分的定制空间。
echarts
Apache ECharts is a powerful, interactive charting and data visualization library for browser
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0254
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
JoyAI-VL-Interaction-Preview京东开源首个开源、视觉驱动的实时交互模型——它能实时监控视频流,并自主决定何时发言、保持沉默或委托任务。Jinja00
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0183
MaxKB强大易用的开源企业级智能体平台Python02
note-gen一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。TSX011
项目优选
收起
暂无描述
Dockerfile
787
5.17 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
900
2.09 K
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
721
1.45 K
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.14 K
1.18 K
deepin linux kernel
C
32
16
Ascend Extension for PyTorch
Python
768
995
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
472
482
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
2.51 K
689
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Python
1.08 K
684
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.05 K
277