FusionCharts 教程:从零开始掌握强大的数据可视化
目录
-
(图片来源网络,侵删)- 什么是 FusionCharts?
- 为什么选择 FusionCharts?
- FusionCharts 的核心组件
-
- 获取 FusionCharts
- 项目结构
- 创建你的第一个图表(以 HTML 为例)
- 代码解析
-
- 数据传递方式
- JSON 格式
- XML 格式
- 图表配置
dataSource和dataFormatchart对象:配置图表外观data对象:配置图表数据
- 图表交互
- 事件监听(点击、悬停等)
- 动态更新数据
- 多图表与组合图
- 多实例
- MSCombiChart (组合图)
- 数据传递方式
-
- 响应式设计
- 使用主题
- 导出图表为图片/PDF
- 图表联动
-
(图片来源网络,侵删)- 常见问题
- 最佳实践
第一部分:初识 FusionCharts
什么是 FusionCharts?
FusionCharts 是一个功能强大、跨平台、响应式的图表库,它可以帮助开发者轻松地在 Web 和移动应用中创建各种类型(超过 100 种)的交互式图表,包括 2D/3D 柱状图、折线图、饼图、仪表盘、漏斗图、地图等。
为什么选择 FusionCharts?
- 图表类型丰富:几乎涵盖了所有常见和特殊的数据可视化需求。
- 高度可定制:从颜色、字体到动画效果,几乎所有视觉元素都可以配置。
- 跨平台兼容:支持所有主流浏览器和移动设备。
- 性能优异:使用 SVG 和 VML 渲染,即使处理大量数据也能保持流畅。
- 交互性强:内置缩放、平移、数据提示、点击事件等交互功能。
- 优秀的文档和社区支持:文档清晰,示例丰富,遇到问题容易找到解决方案。
FusionCharts 的核心组件
- FusionCharts Core Library: 这是基础库,包含了渲染图表所需的核心 JavaScript 代码。
- Chart Specific Files: 每种图表类型(如
Column2D,Line,Pie等)都有一个对应的 JavaScript 文件,定义了该图表的特定属性和行为。 - Themes: 提供预定义的样式主题,可以快速美化图表。
第二部分:环境搭建与第一个图表
获取 FusionCharts
你可以通过以下两种方式获取 FusionCharts:
- 下载试用版:访问 FusionCharts 官网,下载免费试用版,试用版会有水印,但功能完整,足够学习和开发使用。
- 使用 CDN (推荐):这是最简单快捷的方式,无需下载,直接在 HTML 中引入链接即可。
项目结构
一个最简单的项目结构如下:

my-chart-project/
├── index.html
└── libs/ (存放从 CDN 或下载的 FusionCharts 文件)
└── fusioncharts.js
└── fusioncharts.charts.js
└── themes/
└── fusioncharts.theme.fusion.js
创建你的第一个图表(使用 CDN)
我们将创建一个简单的 2D 柱状图,展示一个月的销售额。
index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的第一个 FusionCharts 图表</title>
<!-- 1. 引入 FusionCharts 核心库 -->
<script src="https://cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script>
<!-- 2. 引入你需要图表类型的库,这里是 2D 柱状图 -->
<script src="https://cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.charts.js"></script>
<!-- 3. 引入一个主题文件,让图表更美观 (可选) -->
<script src="https://cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script>
<style>
body { font-family: Arial, sans-serif; }
#chart-container { width: 100%; height: 400px; }
</style>
</head>
<body>
<h1>2025年月度销售额</h1>
<div id="chart-container"></div>
<script>
// 4. 图表配置和数据
const dataSource = {
chart: {
// 在 'chart' 对象中配置图表的全局属性
caption: "2025年月度销售额",
subCaption: "单位:万元",
xAxisName: "月份",
yAxisName: "销售额",
theme: "fusion" // 使用我们引入的 'fusion' 主题
},
data: [
// 在 'data' 数组中定义具体的数据点
{ label: "一月", value: "12500" },
{ label: "二月", value: "15200" },
{ label: "三月", value: "14800" },
{ label: "四月", value: "17800" },
{ label: "五月", value: "19600" },
{ label: "六月", value: "20100" }
]
};
// 5. 初始化图表
FusionCharts.ready(function () {
var myChart = new FusionCharts({
type: "column2d", // 指定图表类型为 2D 柱状图
renderAt: "chart-container", // 指定图表渲染的 DOM 元素 ID
width: "100%", // 图表宽度
height: "400", // 图表高度
dataFormat: "json", // 指定数据格式为 JSON
dataSource: dataSource // 传入配置好的数据源
}).render();
});
</script>
</body>
</html>
代码解析
- 引入库:通过
<script>标签依次引入核心库、图表类型库和主题库,使用 CDN 时,直接替换链接即可。 - 容器:
<div id="chart-container">是一个占位符,图表将在这里被渲染。 - 数据源 (
dataSource):- 这是一个 JavaScript 对象,包含了图表的所有信息。
chart对象:用于设置图表的标题、坐标轴名称、主题等全局样式。data数组:一个包含数据点的对象数组,每个对象代表一个柱子(或其他图表元素),label是标签,value是数值。
- 初始化图表:
FusionCharts.ready():确保 FusionCharts 库完全加载后再执行初始化代码,是最佳实践。new FusionCharts({...}):创建一个新的图表实例。type: 图表类型,如"column2d","line","pie"等。renderAt: 要挂载图表的 DOM 元素 ID。width和height: 图表的尺寸。dataFormat: 数据格式,可以是"json"或"xml"。dataSource: 我们之前定义好的数据源对象。.render(): 执行渲染,将图表显示在页面上。
将上述代码保存为 index.html 并用浏览器打开,你就能看到一个漂亮的 2D 柱状图了!
第三部分:核心功能详解
数据传递方式
除了上面使用的 JSON,FusionCharts 也支持 XML 格式。
JSON 格式 (推荐)
JSON 更简洁、易读,是 JavaScript 中的首选。
const dataSource = {
chart: { /* ... */ },
data: [
{ label: "标签1", value: "100" },
// ...
]
};
XML 格式
XML 结构更严格,适合从后端服务直接返回 XML 数据的场景。
<chart caption='我的图表' xAxisName='X轴' yAxisName='Y轴'>
<set label='标签1' value='100' />
<set label='标签2' value='200' />
<!-- ... -->
</chart>
在初始化图表时,只需将 dataFormat 设为 "xml",并将 dataSource 设为包含 XML 字符串的变量即可。
图表配置
FusionCharts 的配置非常灵活,主要通过 dataSource 对象中的 chart 和 data 属性进行。
-
chart对象常用属性:caption: 图表主标题。subCaption: 图表副标题。xAxisName/yAxisName: X/Y 轴名称。numberPrefix/numberSuffix: 数值前缀/后缀,如 或K。paletteColors: 定义图表的颜色序列,如"#FF0000,#00FF00,#0000FF"。bgColor: 图表背景色。showBorder: 是否显示边框。theme: 应用预定义主题。
-
data对象常用属性:label: 数据点的标签。value: 数据点的值。link: 点击数据点时跳转的 URL。color: 覆盖chart.paletteColors为单个数据点设置颜色。
图表交互
事件监听
FusionCharts 提供了丰富的事件,如 beforeRender, renderComplete, dataPlotClick 等。
const myChart = new FusionCharts({ /* ... */ });
// 添加事件监听器
myChart.addEventListener('dataPlotClick', function(event, args) {
console.log('你点击了:', args.data.label, '值是:', args.data.value);
// 可以在这里做更多操作,比如弹出详情框
});
myChart.render();
动态更新数据
你可以随时改变图表的数据并重新渲染。
// 假设 myChart 已经渲染
const newDataSource = {
chart: { /* ... 保持不变 ... */ },
data: [
{ label: "七月", value: "22000" },
{ label: "八月", value: "23500" }
]
};
// 使用 updateChartData 方法更新数据
myChart.updateChartData(newDataSource);
多图表与组合图
多图表
只需在页面上放置多个 <div> 容器,并为每个容器初始化一个独立的 FusionCharts 实例即可。
<div id="chart1"></div>
<div id="chart2"></div>
<script>
const chart1 = new FusionCharts({ type: 'pie2d', ...renderAt: 'chart1', ... }).render();
const chart2 = new FusionCharts({ type: 'line', ...renderAt: 'chart2', ... }).render();
</script>
组合图
组合图允许在同一个图表中显示多种类型的图表,例如柱状图+折线图,你需要使用 MSCombiChart 图表类型。
const dataSource = {
chart: {
caption: "收入与利润分析",
yAxisName: "金额 (万元)",
plotToolText: "$label 的 $seriesName 是 $dataValue 万元"
},
categories: [{
category: [
{ label: "一月" },
{ label: "二月" },
{ label: "三月" }
]
}],
dataset: [
{
seriesname: "收入",
renderAs: "column", // 渲染为柱状图
data: [
{ value: "12500" },
{ value: "15200" },
{ value: "14800" }
]
},
{
seriesname: "利润",
renderAs: "line", // 渲染为折线图
data: [
{ value: "2500" },
{ value: "3200" },
{ value: "2800" }
]
}
]
};
注意组合图的数据结构略有不同,使用 categories 和 dataset。
第四部分:高级主题与实用技巧
响应式设计
FusionCharts 默认就是响应式的,你只需要设置 width: "100%",高度可以固定也可以设置为百分比,图表会自动根据容器大小进行缩放。
使用主题
除了 fusion 主题,FusionCharts 还提供了 zune, candy, gammel 等多种主题,只需引入对应的 JS 文件,并在 chart 对象中设置 theme: "主题名" 即可。
<script src="https://cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script>
chart: {
theme: "zune" // 应用 zune 主题
}
导出图表
FusionCharts 内置了导出功能,可以将图表导出为 PNG, JPG, SVG 或 PDF。
- 引入导出组件的 JS 文件。
<script src="https://cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.export.js"></script>
- 在初始化图表时,启用导出功能。
const myChart = new FusionCharts({ // ... 其他配置 "exportEnabled": "1", // 启用导出 "exportAtClientSide": "1" // 在客户端导出 }); - 图表右上角会自动出现一个导出菜单。
图表联动
联动是指一个图表的操作(如点击或悬停)能影响另一个图表,这通常通过 JavaScript 事件来实现。
示例:点击饼图,高亮柱状图对应的柱子
- 为饼图添加
dataPlotClick事件监听器。 - 在事件处理函数中,获取被点击的数据标签("产品A")。
- 获取柱状图的实例。
- 调用柱状图的
dataset[index].setSeriesProperty()方法,将被点击的系列高亮,其他系列恢复原状。
第五部分:常见问题与最佳实践
常见问题
-
Q: 图表不显示,控制台报错?
- A: 检查:
- FusionCharts 的 JS 文件是否正确引入。
renderAt的 ID 是否与页面上的<div>ID 匹配。dataSource中的 JSON 或 XML 格式是否正确(注意逗号和括号)。- 查看浏览器控制台 (F12) 的具体错误信息。
- A: 检查:
-
Q: 如何处理从后端 API 获取的动态数据?
- A: 使用
fetch或axios等 AJAX 库获取数据,获取成功后,将数据解析并构造成 FusionCharts 需要的 JSON 格式,然后调用myChart.updateChartData()方法更新图表。
- A: 使用
-
Q: 图表在移动设备上显示异常?
- A: 确保
viewportmeta 标签已设置:<meta name="viewport" content="width=device-width, initial-scale=1.0">,将图表的width设置为"100%"以适应不同屏幕。
- A: 确保
最佳实践
- 使用
FusionCharts.ready():始终在ready回调中初始化图表,避免库未加载完成导致的错误。 - 数据与视图分离:将图表的配置和数据(尤其是从后端获取的)与渲染逻辑分开,使代码更清晰、更易于维护。
- 使用 CDN:在开发和学习阶段,使用 CDN 可以快速上手,在生产环境中,可以根据需要下载文件到本地服务器,以获得更好的性能和控制。
- 善用主题:使用主题可以极大地提升图表的美观度,而无需手动配置大量样式。
第六部分:资源与进阶学习
- FusionCharts 官方文档:这是最权威、最全面的资源,包含了所有图表类型的详细属性说明和 API 参考。
- FusionCharts 示例中心:提供了数百个可交互的示例,你可以在线编辑代码并实时查看效果,是学习和寻找灵感的好地方。
- FusionCharts API 参考:查看所有可配置的 API 和方法。
希望这份详细的教程能帮助你快速上手 FusionCharts!祝你使用愉快!
