在数据统计和业务分析场景中,对比两组关联数据的差异是常见需求,3D双柱状图相比普通二维图表,能通过立体效果更清晰地呈现数据层级和对比关系。FusionCharts作为老牌的前端图表库,内置了多种3D图表类型,其中3D双柱状图的实现逻辑清晰,配置项灵活,适合各类前端项目集成。
环境准备与基础集成
使用FusionCharts开发3D双柱状图前,需要先完成库的引入。可以通过CDN直接引入,也可以下载本地文件部署。如果是常规的前端项目,推荐通过CDN引入最新稳定版本,避免版本兼容问题。
首先需要在HTML页面中添加FusionCharts的核心库和主题文件,主题文件可以帮我们快速设置图表的默认样式,减少自定义配置的工作量。引入完成后,需要在页面中准备一个用于渲染图表的容器元素,一般是div标签,需要设置明确的宽度和高度,避免图表渲染后出现尺寸异常。
基础引入代码示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>FusionCharts 3D双柱状图示例</title>
<!-- 引入FusionCharts核心库 -->
<script src="https://static.ipipp.com/fusioncharts/latest/fusioncharts.js"></script>
<!-- 引入3D图表模块 -->
<script src="https://static.ipipp.com/fusioncharts/latest/fusioncharts.charts.js"></script>
<!-- 引入主题文件,这里使用默认的fusion主题 -->
<script src="https://static.ipipp.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script>
<style>
.chart-container {
width: 800px;
height: 500px;
margin: 20px auto;
}
</style>
</head>
<body>
<div id="doubleBar3DChart" class="chart-container"></div>
<script>
// 后续图表渲染代码会写在这里
</script>
</body>
</html>3D双柱状图核心配置解析
FusionCharts的3D双柱状图对应图表类型为mscolumn3d,其中ms代表多系列(multi-series),column3d代表3D柱状图。要实现双柱状效果,只需要配置两个数据系列即可。核心配置分为图表全局配置、类别配置、数据系列配置三个部分。
图表全局配置项
全局配置主要设置图表的标题、坐标轴标签、3D效果参数、交互提示等基础属性,常用的配置项如下表所示:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| caption | 图表主标题 | 空 |
| subCaption | 图表副标题 | 空 |
| xAxisName | X轴名称 | 空 |
| yAxisName | Y轴名称 | 空 |
| paletteColors | 系列颜色,多个颜色用逗号分隔 | 内置默认色板 |
| bgColor | 图表背景色 | #FFFFFF |
| showBorder | 是否显示图表边框 | 1(显示) |
| use3DLighting | 是否启用3D光照效果 | 1(启用) |
| showValues | 是否显示柱状图上的数值 | 0(不显示) |
| rotateValues | 是否旋转数值标签 | 0(不旋转) |
数据格式要求
3D双柱状图的数据需要按照categories(类别)和dataset(数据集)的结构组织。categories定义X轴的刻度标签,dataset定义每个数据系列的具体数值,每个系列对应一组柱状图。
如果是双柱状图,dataset数组需要包含两个对象,分别对应两个数据系列,每个对象的seriesname配置该系列的名称,会显示在图例中,data数组对应该系列在每个类别下的数值,需要和categories的长度一致。
完整实现示例
下面是一个完整的3D双柱状图实现代码,展示2023年四个季度两个产品的销售额对比,包含完整的配置和渲染逻辑。
// 页面加载完成后渲染图表
document.addEventListener('DOMContentLoaded', function() {
// 图表配置对象
const chartConfig = {
type: 'mscolumn3d', // 指定图表类型为3D多系列柱状图
renderAt: 'doubleBar3DChart', // 渲染容器的id
width: '100%',
height: '100%',
dataFormat: 'json', // 数据格式为JSON
dataSource: {
// 图表全局配置
chart: {
caption: '2023年产品销售额对比',
subCaption: '产品A vs 产品B 季度数据',
xAxisName: '季度',
yAxisName: '销售额(万元)',
paletteColors: '#42a5f5,#66bb6a', // 产品A蓝色,产品B绿色
bgColor: '#f5f5f5',
showBorder: '0',
use3DLighting: '1',
showValues: '1',
rotateValues: '0',
valueFontColor: '#333333',
valueFontSize: '12',
baseFont: '微软雅黑',
baseFontSize: '14',
showLegend: '1', // 显示图例
legendPosition: 'bottom', // 图例位置在底部
legendAllowDrag: '0', // 禁止拖拽图例
// 3D效果相关配置
dim3D: '30', // 3D深度
angle3D: '30', // 3D视角角度
depth3D: '30', // 3D厚度
// 坐标轴配置
showXAxisLine: '1',
xAxisLineColor: '#cccccc',
showYAxisLine: '1',
yAxisLineColor: '#cccccc',
yAxisMinValue: '0', // Y轴最小值
numDivLines: '5', // Y轴分隔线数量
divLineColor: '#e0e0e0',
divLineAlpha: '50'
},
// X轴类别配置,对应四个季度
categories: [
{
category: [
{ label: '第一季度' },
{ label: '第二季度' },
{ label: '第三季度' },
{ label: '第四季度' }
]
}
],
// 数据系列配置,两个系列对应双柱状
dataset: [
{
seriesname: '产品A',
data: [
{ value: '120' },
{ value: '180' },
{ value: '210' },
{ value: '190' }
]
},
{
seriesname: '产品B',
data: [
{ value: '90' },
{ value: '150' },
{ value: '240' },
{ value: '220' }
]
}
]
}
};
// 渲染图表
FusionCharts.ready(function() {
const chart = new FusionCharts(chartConfig);
chart.render();
});
});进阶功能实现
动态更新数据
在实际业务中,经常需要根据时间范围切换或者筛选条件变化更新图表数据,FusionCharts支持通过API动态更新数据源,不需要重新创建图表实例。
可以通过chart.setJSONData()方法更新整个数据源,也可以通过chart.dataUpdate()方法更新部分数据。下面的示例实现点击按钮切换为半年数据的功能:
// 动态更新数据的方法
function updateChartData() {
// 获取已渲染的图表实例
const chart = FusionCharts('doubleBar3DChart');
if (!chart) return;
// 新的数据源
const newDataSource = {
chart: {
caption: '2023年产品销售额对比(半年维度)',
subCaption: '产品A vs 产品B 上下半年数据',
xAxisName: '半年',
yAxisName: '销售额(万元)',
paletteColors: '#42a5f5,#66bb6a',
bgColor: '#f5f5f5',
showBorder: '0',
use3DLighting: '1',
showValues: '1',
showLegend: '1',
legendPosition: 'bottom',
dim3D: '30',
angle3D: '30',
depth3D: '30'
},
categories: [
{
category: [
{ label: '上半年' },
{ label: '下半年' }
]
}
],
dataset: [
{
seriesname: '产品A',
data: [
{ value: '300' }, // 120+180
{ value: '400' } // 210+190
]
},
{
seriesname: '产品B',
data: [
{ value: '240' }, // 90+150
{ value: '460' } // 240+220
]
}
]
};
// 更新图表数据
chart.setJSONData(newDataSource);
}
// 绑定按钮点击事件
document.getElementById('updateDataBtn')?.addEventListener('click', updateChartData);添加交互事件
FusionCharts支持为柱状图的数据点添加点击事件,方便跳转到详情页或者展示更详细的数据。可以通过chart.addEventListener()方法监听dataPlotClick事件,事件对象中会包含点击的数据点相关信息,比如系列名称、类别标签、数值等。
// 添加数据点点击事件
FusionCharts.ready(function() {
const chart = new FusionCharts(chartConfig);
chart.addEventListener('dataPlotClick', function(event) {
const dataObj = event.data;
const seriesName = dataObj.seriesName; // 系列名称,如产品A
const categoryLabel = dataObj.categoryLabel; // 类别标签,如第一季度
const dataValue = dataObj.dataValue; // 数值
alert(`你点击了${seriesName}的${categoryLabel},销售额为${dataValue}万元`);
});
chart.render();
});常见问题排查
- 图表不显示:首先检查容器是否存在且尺寸正确,然后检查FusionCharts库是否引入成功,控制台是否有报错。如果使用的是模块化项目,需要确认是否正确导出了FusionCharts实例。
- 3D效果不明显:可以调整
dim3D、angle3D、depth3D三个配置项,数值越大3D效果越明显,但过大会导致图表变形,建议数值在20-45之间调整。 - 数据不对应:检查dataset中每个系列的data数组长度是否和categories的category数组长度一致,不一致会导致部分数据不显示或者错位。
- 颜色不符合需求:通过
paletteColors配置项自定义颜色,支持十六进制颜色值,多个颜色用逗号分隔,顺序和dataset中的系列顺序对应。
总结
FusionCharts实现3D双柱状图的流程清晰,核心在于正确配置图表类型、数据源和3D相关参数。通过灵活调整配置项,可以满足不同业务场景的样式和交互需求。在实际开发中,建议先梳理清楚数据的结构和展示需求,再逐步配置对应的参数,遇到问题时可以通过官方文档查询配置项说明,或者检查控制台的错误提示快速定位问题。掌握这个图表的实现后,也可以扩展到更多系列的多系列3D柱状图开发,只需要增加dataset中的系列数量即可。
FusionCharts3D双柱状图JavaScript图表数据可视化前端图表开发修改时间:2026-05-24 22:14:13