数据可视化工具完整调研报告 (2025版)
📋 快速导航
📊 图表库
1. ECharts ⭐⭐⭐⭐⭐
- 官网: https://echarts.apache.org/
- GitHub: apache/echarts (⭐60k+)
- 开发: Apache (百度捐赠)
- 定价: 完全免费开源
核心特点
- 功能最全: 20+图表类型
- 配置丰富: 高度可定制
- 性能优秀: Canvas渲染,支持大数据量
- 中文文档: 文档详尽
图表类型
基础图表:
- 折线图、柱状图、饼图、散点图
- 雷达图、K线图、热力图、树图
- 漏斗图、仪表盘、关系图、旭日图
高级图表:
- 地图(中国地图、世界地图)
- 3D图表(柱状图、散点图、曲面图)
- GL图表(地球、流场、轨迹)
- 自定义系列
基础示例
折线图:
import * as echarts from 'echarts';
const chart = echarts.init(document.getElementById('main'));
const option = {
title: {
text: '销售趋势'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['产品A', '产品B']
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月']
},
yAxis: {
type: 'value'
},
series: [
{
name: '产品A',
type: 'line',
data: [120, 200, 150, 80, 70, 110],
smooth: true
},
{
name: '产品B',
type: 'line',
data: [90, 120, 100, 140, 100, 130],
smooth: true
}
]
};
chart.setOption(option);
动态数据:
// 定时更新数据
setInterval(() =\> {
const newData = fetchLatestData();
chart.setOption({
series: [{
data: newData
}]
});
}, 3000);
大数据量优化:
const option = {
dataset: {
source: largeDataArray // 10万+数据
},
dataZoom: [
{
type: 'slider',
start: 0,
end: 10 // 初始只显示10%
}
],
series: {
type: 'line',
sampling: 'lttb', // 降采样算法
large: true, // 大数据模式
largeThreshold: 2000
}
};
React集成:
import ReactECharts from 'echarts-for-react';
function SalesChart() {
const option = {
// ... echarts配置
};
return <ReactECharts option={option} style={{ height: 400 }} /\>;
}
优势
✅ 图表类型最丰富 ✅ 配置灵活强大 ✅ 中文文档完善 ✅ 大数据支持好 ✅ 完全免费
劣势
❌ 配置复杂,学习曲线陡 ❌ 文件体积较大(压缩后300KB+)
适用场景
- 复杂数据可视化
- 大屏展示
- 数据量大的场景
- 需要丰富图表类型
2. Chart.js ⭐⭐⭐⭐⭐
- 官网: https://www.chartjs.org/
- GitHub: chartjs/Chart.js (⭐64k+)
- 定价: 开源免费
核心特点
- 简单易用: API简洁
- 响应式: 自适应容器
- 轻量: 压缩后60KB
- Canvas渲染: 性能好
图表类型
- Line (折线图)
- Bar (柱状图)
- Radar (雷达图)
- Doughnut & Pie (环形图和饼图)
- Polar Area (极地图)
- Bubble (气泡图)
- Scatter (散点图)
基础示例
import Chart from 'chart.js/auto';
const ctx = document.getElementById('myChart');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
plugins: {
legend: {
position: 'top',
},
title: {
display: true,
text: 'Chart.js Bar Chart'
}
}
}
});
React Chart.js 2:
import { Line } from 'react-chartjs-2';
function LineChart() {
const data = {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
datasets: [
{
label: 'Sales 2024',
data: [65, 59, 80, 81, 56, 55],
fill: false,
borderColor: 'rgb(75, 192, 192)',
tension: 0.1
}
]
};
return <Line data={data} /\>;
}
优势
✅ 简单易用 ✅ 轻量级 ✅ 响应式 ✅ 社区活跃
劣势
❌ 图表类型较少 ❌ 复杂定制能力弱
适用场景
- 简单图表需求
- 快速原型
- 轻量级项目
3. D3.js ⭐⭐⭐⭐⭐
- 官网: https://d3js.org/
- GitHub: d3/d3 (⭐108k+)
- 定价: 开源免费
核心特点
- 最灵活: 完全自定义
- 数据驱动: DOM操作基于数据
- 强大: 可实现任何可视化
- SVG: 基于SVG渲染
学习曲线示例
简单柱状图:
import * as d3 from 'd3';
const data = [30, 86, 168, 281, 303, 365];
d3.select('.chart')
.selectAll('div')
.data(data)
.enter()
.append('div')
.style('width', d =\> d + 'px')
.text(d =\> d);
SVG图表:
const svg = d3.select('svg')
.attr('width', 500)
.attr('height', 300);
const data = [4, 8, 15, 16, 23, 42];
const x = d3.scaleLinear()
.domain([0, d3.max(data)])
.range([0, 420]);
svg.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('x', 0)
.attr('y', (d, i) =\> i * 40)
.attr('width', d =\> x(d))
.attr('height', 35)
.attr('fill', 'steelblue');
力导向图:
const simulation = d3.forceSimulation(nodes)
.force('link', d3.forceLink(links).id(d =\> d.id))
.force('charge', d3.forceManyBody())
.force('center', d3.forceCenter(width / 2, height / 2));
const link = svg.append('g')
.selectAll('line')
.data(links)
.join('line');
const node = svg.append('g')
.selectAll('circle')
.data(nodes)
.join('circle')
.attr('r', 5)
.call(drag(simulation));
simulation.on('tick', () =\> {
link
.attr('x1', d =\> d.source.x)
.attr('y1', d =\> d.source.y)
.attr('x2', d =\> d.target.x)
.attr('y2', d =\> d.target.y);
node
.attr('cx', d =\> d.x)
.attr('cy', d =\> d.y);
});
优势
✅ 最灵活最强大 ✅ 可实现任何可视化 ✅ 社区成熟 ✅ Observable集成
劣势
❌ 学习曲线极陡 ❌ 开发速度慢 ❌ 需要深厚可视化知识
适用场景
- 高度定制化需求
- 复杂交互可视化
- 数据新闻
- 研究和探索
4. Recharts ⭐⭐⭐⭐⭐
- 官网: https://recharts.org/
- GitHub: recharts/recharts (⭐23k+)
- 定价: 开源免费
核心特点
- React专用: 原生React组件
- 声明式: JSX语法
- D3驱动: 底层使用D3
- 易用: 简单直观
示例
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';
const data = [
{ name: '1月', uv: 4000, pv: 2400 },
{ name: '2月', uv: 3000, pv: 1398 },
{ name: '3月', uv: 2000, pv: 9800 },
{ name: '4月', uv: 2780, pv: 3908 },
{ name: '5月', uv: 1890, pv: 4800 },
{ name: '6月', uv: 2390, pv: 3800 },
];
function MyChart() {
return (
<LineChart width={600} height={300} data={data}\>
\<CartesianGrid strokeDasharray="3 3" /\>
\<XAxis dataKey="name" /\>
<YAxis /\>
<Tooltip /\>
<Legend /\>
\<Line type="monotone" dataKey="pv" stroke="#8884d8" /\>
\<Line type="monotone" dataKey="uv" stroke="#82ca9d" /\>
</LineChart\>
);
}
复杂组合图:
<ComposedChart width={600} height={400} data={data}\>
\<CartesianGrid stroke="#f5f5f5" /\>
\<XAxis dataKey="name" /\>
<YAxis /\>
<Tooltip /\>
<Legend /\>
\<Bar dataKey="uv" barSize={20} fill="#413ea0" /\>
\<Line type="monotone" dataKey="uv" stroke="#ff7300" /\>
\<Area type="monotone" dataKey="amt" fill="#8884d8" stroke="#8884d8" /\>
</ComposedChart\>
优势
✅ React开发友好 ✅ 声明式,易理解 ✅ 组件化复用 ✅ TypeScript支持好
劣势
❌ 仅React生态 ❌ 定制能力不如D3 ❌ 性能不如ECharts
适用场景
- React项目
- 快速开发
- 中小规模图表
5. ApexCharts ⭐⭐⭐⭐⭐
- 官网: https://apexcharts.com/
- GitHub: apexcharts/apexcharts.js (⭐14k+)
- 定价: 开源免费
核心特点
- 现代化: 界面美观
- 交互丰富: 动画流畅
- 响应式: 移动端友好
- 框架集成: React/Vue/Angular
示例
import ApexCharts from 'apexcharts';
const options = {
series: [{
name: 'sales',
data: [30, 40, 35, 50, 49, 60, 70, 91, 125]
}],
chart: {
type: 'area',
height: 350
},
xaxis: {
categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep"]
}
};
const chart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
React ApexCharts:
import Chart from 'react-apexcharts';
function App() {
const options = {
chart: { id: 'basic-bar' },
xaxis: {
categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998]
}
};
const series = [{
name: 'series-1',
data: [30, 40, 45, 50, 49, 60, 70, 91]
}];
return (
\<Chart options={options} series={series} type="bar" width="500" /\>
);
}
优势
✅ 界面现代美观 ✅ 开箱即用 ✅ 框架集成好 ✅ 免费商用
📈 BI工具
1. Metabase ⭐⭐⭐⭐⭐
- 官网: https://www.metabase.com/
- GitHub: metabase/metabase (⭐38k+)
- 定价: 开源免费 + 云版 $85/月起
核心特点
- 易用: 无需SQL,可视化查询
- 自助分析: 业务人员可用
- 多数据源: 20+数据库
- 分享: Dashboard分享和嵌入
安装部署
Docker部署:
docker run -d -p 3000:3000 \
-e "MB_DB_TYPE=postgres" \
-e "MB_DB_DBNAME=metabase" \
-e "MB_DB_PORT=5432" \
-e "MB_DB_USER=metabase" \
-e "MB_DB_PASS=password" \
-e "MB_DB_HOST=postgres" \
--name metabase metabase/metabase
JAR运行:
java -jar metabase.jar
使用流程
1. 连接数据源:
Settings → Admin → Databases → Add Database
支持:
- PostgreSQL, MySQL, MongoDB
- BigQuery, Redshift, Snowflake
- Google Analytics, Stripe等
2. 创建问题(Question):
可视化界面:
1. 选择数据表
2. 选择指标(聚合)
3. 添加分组
4. 添加过滤
5. 选择图表类型
或使用SQL:
SELECT
date_trunc('month', created_at) as month,
count(*) as users
FROM users
GROUP BY month
ORDER BY month;
3. 创建仪表盘:
Dashboard:
- 添加多个Question
- 拖拽布局
- 添加文本卡片
- 设置过滤器(日期、类别等)
- 设置自动刷新
分享:
- 公开链接
- 嵌入iframe
- 订阅邮件发送
高级功能
SQL参数:
-- 支持参数化SQL
SELECT *
FROM orders
WHERE created_at \>= {{start_date}}
AND created_at < {{end_date}}
AND status = {{status}}
Alert(告警):
设置条件告警:
- 销售额 < 10000
- 错误率 \> 5%
→ 发送Slack/Email通知
模型(Models):
创建虚拟表:
SELECT
u.id,
u.name,
count(o.id) as order_count,
sum(o.total) as total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name
保存为Model → 其他人可基于此创建Question
优势
✅ 开源免费 ✅ 无需SQL也可用 ✅ 界面友好 ✅ 功能全面 ✅ 部署简单
劣势
❌ 大数据量性能一般 ❌ 高级分析能力有限
适用场景
- 中小企业BI
- 数据自助分析
- 快速搭建Dashboard
- 团队数据共享
2. Apache Superset ⭐⭐⭐⭐⭐
- 官网: https://superset.apache.org/
- GitHub: apache/superset (⭐61k+)
- 开发: Apache (Airbnb捐赠)
- 定价: 完全免费开源
核心特点
- 功能强大: 企业级BI
- 可扩展: Python插件系统
- SQL Lab: 强大的SQL IDE
- 图表丰富: 50+可视化类型
安装部署
Docker Compose:
git clone https://github.com/apache/superset.git
cd superset
docker-compose -f docker-compose-non-dev.yml up -d
# 访问 http://localhost:8088
# 默认账号: admin / admin
Kubernetes:
helm repo add superset https://apache.github.io/superset/
helm install superset superset/superset
核心功能
SQL Lab:
强大的SQL IDE:
- 语法高亮
- 自动补全
- 查询历史
- 保存查询
- 导出结果(CSV/JSON)
- 可视化结果
支持:
- CTEs
- 子查询
- 复杂JOIN
- 参数化查询
Datasets:
定义数据集:
1. 连接数据库
2. 选择表
3. 定义虚拟列(计算字段)
4. 定义指标(SUM/AVG/COUNT等)
5. 保存 → 可被用于图表
Dashboard:
创建仪表盘:
- 拖拽布局
- 添加多个图表
- 跨图表筛选
- 原生过滤器
- 时间范围选择
- 自动刷新
- 全屏展示模式
Alert & Reports:
定时报告:
- 每天/每周发送Dashboard截图
- 发送到Email/Slack
告警:
- SQL查询结果满足条件
- 触发通知
图表类型
基础:
- 表格、折线、柱状、饼图、散点
高级:
- 桑基图、和弦图、树图
- 漏斗图、气泡图、雷达图
- 热力图、箱线图、小提琴图
- 世界地图、国家地图
时间序列:
- 时间序列柱状/折线
- 对比时间序列
- 季节性分解
大数据:
- Deck.gl集成(地理可视化)
- Superset支持Druid/ClickHouse等OLAP
权限控制
基于角色的访问控制:
- Admin: 所有权限
- Alpha: 创建和编辑
- Gamma: 只读
数据源级别:
- 限制可访问的数据库
- 限制可访问的表
行级安全(RLS):
- 根据用户身份过滤数据
- 例: sales_person_id = {{ current_user_id() }}
优势
✅ 功能最强大 ✅ 完全开源免费 ✅ 大数据支持 ✅ 可扩展性强 ✅ 企业级功能
劣势
❌ 部署复杂 ❌ 学习曲线陡 ❌ 资源占用大
适用场景
- 大中型企业BI
- 数据分析团队
- 大数据分析
- 需要高度定制
3. Redash ⭐⭐⭐⭐
- 官网: https://redash.io/
- GitHub: getredash/redash (⭐26k+)
- 定价: 开源免费 + 云版 $49/月起
核心特点
- SQL为中心: 面向数据分析师
- 查询协作: 团队共享查询
- 简单轻量: 易于部署
优势
✅ 简单易用 ✅ 查询共享方便 ✅ 支持数据源多
劣势
❌ 可视化能力弱于Superset ❌ 功能相对简单
📺 仪表盘工具
1. Grafana ⭐⭐⭐⭐⭐
- 官网: https://grafana.com/
- GitHub: grafana/grafana (⭐62k+)
- 定价: 开源免费 + 云版
核心特点
- 监控专家: 时序数据可视化
- 数据源丰富: 70+集成
- 插件生态: 丰富的插件
- 告警: 强大的告警规则
安装
# Docker
docker run -d -p 3000:3000 grafana/grafana
# macOS
brew install grafana
brew services start grafana
# 访问 http://localhost:3000
# 默认: admin / admin
数据源配置
Prometheus:
# Configuration → Data Sources → Add Prometheus
URL: http://prometheus:9090
MySQL:
Host: localhost:3306
Database: mydb
User: grafana
Dashboard创建
Panel配置:
1. 选择数据源
2. 编写查询:
# Prometheus
rate(http_requests_total[5m])
# MySQL
SELECT
time,
value
FROM metrics
WHERE $__timeFilter(time)
3. 选择可视化类型:
- Time series (时序图)
- Stat (单值)
- Gauge (仪表盘)
- Bar gauge (条形)
- Table (表格)
- Heatmap (热力图)
4. 设置阈值和告警
变量(Variables):
Dashboard设置 → Variables → New
示例: 服务器下拉选择
Name: server
Type: Query
Query: SELECT DISTINCT server FROM metrics
使用:
SELECT * FROM metrics WHERE server = '$server'
告警规则:
Panel → Alert → Create Alert
Conditions:
WHEN avg() OF query(A, 5m, now) IS ABOVE 80
Notifications:
→ Send to: Slack, Email, PagerDuty等
优势
✅ 监控可视化最强 ✅ 时序数据处理好 ✅ 插件生态丰富 ✅ 开源免费
劣势
❌ 主要面向监控 ❌ 非时序数据支持弱
适用场景
- 系统监控
- 应用性能监控(APM)
- 时序数据可视化
- DevOps团队
2. Kibana ⭐⭐⭐⭐⭐
- 官网: https://www.elastic.co/kibana
- 开发: Elastic
- 定价: 开源免费(基础版) + 商业版
核心特点
- ELK核心: Elasticsearch可视化
- 日志分析: 强大的日志查询
- 实时搜索: 亚秒级响应
核心功能
Discover:
日志搜索和探索:
- 全文搜索
- 字段过滤
- 时间范围
- 保存搜索
Dashboard:
拖拽创建仪表盘:
- 添加可视化
- 设置过滤器
- 时间同步
- 刷新间隔
Visualize:
可视化类型:
- 折线、柱状、饼图
- 数据表、指标
- Markdown
- Coordinate & Region Map
- Tag Cloud
- Timeline (TSVB)
Canvas:
像素级完美仪表盘:
- 自定义布局
- 添加背景图
- 精确定位
优势
✅ Elasticsearch最佳搭档 ✅ 日志分析强大 ✅ 实时性好
劣势
❌ 依赖Elasticsearch ❌ 资源占用大
🔧 低代码数据应用平台
1. Retool ⭐⭐⭐⭐⭐
- 官网: https://retool.com/
- 定价: $10/用户/月起
核心特点
- 拖拽构建: 快速构建内部工具
- 预置组件: 40+UI组件
- 数据库直连: 无需后端
- 代码可嵌入: JavaScript自定义逻辑
功能
组件:
- 表格(可编辑)
- 表单
- 图表(ECharts/Chart.js)
- 按钮、下拉选择等
数据源:
- PostgreSQL, MySQL, MongoDB
- REST API, GraphQL
- Google Sheets, Airtable
- Stripe, Twilio, SendGrid等
操作:
- 查询数据 → 显示在表格
- 编辑 → 更新数据库
- 点击按钮 → 调用API
- JavaScript处理数据
示例场景
Admin Dashboard:
1. 添加Table组件
2. 连接PostgreSQL
3. Query: SELECT * FROM users
4. Table显示数据
5. 添加"禁用用户"按钮
6. 按钮点击 → UPDATE users SET active = false WHERE id = {{table1.selectedRow.id}}
7. 刷新Table
10分钟完成后台管理!
优势
✅ 开发速度极快 ✅ 无需写后端 ✅ 组件丰富 ✅ 企业级权限
劣势
❌ 价格较贵 ❌ 云服务,有数据隐私考虑
2. Appsmith ⭐⭐⭐⭐⭐
- 官网: https://www.appsmith.com/
- GitHub: appsmithorg/appsmith (⭐33k+)
- 定价: 开源免费 + 云版
核心特点
- 开源Retool替代
- 可自部署
- 社区活跃
优势
✅ 开源免费 ✅ 可自部署 ✅ 功能与Retool类似
3. ToolJet ⭐⭐⭐⭐⭐
- 官网: https://www.tooljet.com/
- GitHub: ToolJet/ToolJet (⭐28k+)
- 定价: 开源免费 + 云版
核心特点
- 开源低代码
- 可视化构建
- 移动端支持
🔍 数据探索工具
1. Jupyter Notebook ⭐⭐⭐⭐⭐
- 官网: https://jupyter.org/
- GitHub: jupyter/notebook (⭐11k+)
- 定价: 完全免费
核心特点
- 交互式: 边写边运行
- Python生态: matplotlib, seaborn, plotly
- Markdown: 文档和代码混编
- 共享: nbviewer, JupyterHub
数据可视化
Matplotlib:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('sales.csv')
df.plot(x='date', y='revenue', kind='line')
plt.title('销售趋势')
plt.show()
Seaborn:
import seaborn as sns
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()
Plotly:
import plotly.express as px
fig = px.scatter(df, x='price', y='sales',
size='quantity', color='category',
hover_data=['product'])
fig.show()
2. Observable ⭐⭐⭐⭐⭐
- 官网: https://observablehq.com/
- 定价: 免费 + 团队版 $20/用户/月
核心特点
- D3.js云IDE: 在线编写D3代码
- 实时预览: 代码即时可视化
- 可嵌入: 嵌入到网站
- 协作: 团队共享
示例
// 创建一个柱状图
data = [
{name: 'A', value: 30},
{name: 'B', value: 80},
{name: 'C', value: 45}
]
chart = {
const svg = d3.create("svg")
.attr("width", 500)
.attr("height", 300);
svg.selectAll("rect")
.data(data)
.join("rect")
.attr("x", (d, i) =\> i * 100)
.attr("y", d =\> 300 - d.value)
.attr("width", 80)
.attr("height", d =\> d.value)
.attr("fill", "steelblue");
return svg.node();
}
3. Streamlit ⭐⭐⭐⭐⭐
- 官网: https://streamlit.io/
- GitHub: streamlit/streamlit (⭐33k+)
- 定价: 开源免费 + 云部署
核心特点
- Python快速构建: 纯Python创建Web应用
- 无需前端: 自动生成UI
- 实时交互: 滑块、按钮自动刷新
示例
import streamlit as st
import pandas as pd
import plotly.express as px
st.title('销售数据分析')
# 上传文件
uploaded_file = st.file_uploader("上传CSV", type="csv")
if uploaded_file:
df = pd.read_csv(uploaded_file)
# 显示数据
st.dataframe(df)
# 筛选
category = st.selectbox('选择类别', df['category'].unique())
filtered_df = df[df['category'] == category]
# 图表
fig = px.line(filtered_df, x='date', y='sales')
st.plotly_chart(fig)
# 指标
col1, col2, col3 = st.columns(3)
col1.metric("总销售额", f"${filtered_df['sales'].sum():,.0f}")
col2.metric("平均", f"${filtered_df['sales'].mean():,.0f}")
col3.metric("最大", f"${filtered_df['sales'].max():,.0f}")
运行:
streamlit run app.py
优势
✅ Python开发极快 ✅ 无需前端知识 ✅ 适合数据科学家 ✅ 部署简单
🗺️ 地图可视化
1. Mapbox GL JS ⭐⭐⭐⭐⭐
- 官网: https://www.mapbox.com/
- 定价: 免费额度 + 付费
核心特点
- 性能最好: WebGL渲染
- 样式丰富: 自定义地图样式
- 3D支持: 建筑物3D、地形
示例
import mapboxgl from 'mapbox-gl';
mapboxgl.accessToken = 'your-token';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [116.4074, 39.9042], // 北京
zoom: 12
});
// 添加标记
new mapboxgl.Marker()
.setLngLat([116.4074, 39.9042])
.setPopup(new mapboxgl.Popup().setHTML('<h3\\>北京</h3\\>'))
.addTo(map);
// 添加热力图
map.on('load', () =\> {
map.addSource('earthquakes', {
type: 'geojson',
data: earthquakeData
});
map.addLayer({
id: 'earthquakes-heat',
type: 'heatmap',
source: 'earthquakes'
});
});
2. Leaflet ⭐⭐⭐⭐⭐
- 官网: https://leafletjs.com/
- GitHub: Leaflet/Leaflet (⭐41k+)
- 定价: 完全免费开源
核心特点
- 轻量: 39KB
- 简单易用: API友好
- 插件丰富: 社区插件多
示例
import L from 'leaflet';
const map = L.map('map').setView([39.9042, 116.4074], 13);
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);
L.marker([39.9042, 116.4074])
.addTo(map)
.bindPopup('北京')
.openPopup();
3. Deck.gl ⭐⭐⭐⭐⭐
- 官网: https://deck.gl/
- GitHub: visgl/deck.gl (⭐12k+)
- 开发: Uber
核心特点
- 大数据: 百万级数据点
- WebGL: 性能极好
- 3D可视化: 支持3D图层
📊 工具对比
图表库对比
| 工具 | 难度 | 灵活性 | 性能 | 适用场景 |
|---|---|---|---|---|
| ECharts | 中 | 高 | ⭐⭐⭐⭐⭐ | 复杂图表,大数据 |
| Chart.js | 低 | 中 | ⭐⭐⭐⭐ | 简单图表 |
| D3.js | 高 | 极高 | ⭐⭐⭐⭐ | 高度定制 |
| Recharts | 低 | 中 | ⭐⭐⭐ | React项目 |
| ApexCharts | 低 | 高 | ⭐⭐⭐⭐ | 现代化UI |
BI工具对比
| 工具 | 定价 | 易用性 | 功能 | 部署 |
|---|---|---|---|---|
| Metabase | 免费 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 简单 |
| Superset | 免费 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 复杂 |
| Redash | 免费 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 简单 |
🎯 选型建议
图表库选择
简单项目:
Chart.js (快速) 或 ApexCharts (美观)
React项目:
Recharts (简单) 或 ECharts (复杂)
复杂定制:
D3.js (完全自定义)
大数据可视化:
ECharts (推荐)
BI工具选择
中小团队:
Metabase (易用,快速上手)
数据团队:
Superset (功能强大)
监控告警:
Grafana (时序数据)
日志分析:
Kibana + Elasticsearch
低代码平台选择
有预算:
Retool (最强大)
开源方案:
Appsmith / ToolJet (功能相近)
数据探索
Python用户:
Jupyter + Streamlit
D3用户:
Observable
最后更新: 2025年1月 工具数量: 30+ 重点推荐: ECharts、Chart.js、Metabase、Superset、Grafana、Streamlit、Deck.gl