甘特图纵向任务、横向时间显示图表可视化开发|Highcharts甘特图示例

一、JS代码(倒置横向‑向下排布甘特图)

inverted:true 代表坐标轴翻转,普通甘特图:纵向任务、横向时间;倒置甘特图:横向任务、纵向时间轴向下递增

复制代码
Highcharts.ganttChart('container', {

    chart: {
        inverted: true,
        plotBorderWidth: 1
    },

    title: {
        text: 'Inverted Gantt Chart'
    },

    accessibility: {
        keyboardNavigation: {
            seriesNavigation: {
                mode: 'serialize'
            }
        },
        point: {
            descriptionFormat: '{yCategory}. ' +
                '{#if completed}Task {(multiply completed.amount 100):.1f}% ' +
                'completed. {/if}' +
                'Start {x:%Y-%m-%d}, end {x2:%Y-%m-%d}.'
        }
    },

    lang: {
        accessibility: {
            axis: {
                xAxisDescriptionPlural: 'The chart has a two-part X axis ' +
                    'showing time in both week numbers and days.'
            }
        }
    },

    xAxis: [{
        opposite: false
    }, {
        opposite: false
    }],

    yAxis: {
        uniqueNames: true,
        opposite: true
    },

    series: [{
        name: 'Project 1',
        data: [{
            start: '2018-12-01',
            end: '2018-12-02',
            completed: {
                amount: 0.95
            },
            name: 'Prototyping'
        }, {
            start: '2018-12-02',
            end: '2018-12-05',
            completed: {
                amount: 0.5
            },
            name: 'Development'
        }, {
            start: '2018-12-08',
            end: '2018-12-09',
            completed: {
                amount: 0.15
            },
            name: 'Testing'
        }, {
            start: '2018-12-09',
            end: '2018-12-19',
            completed: {
                amount: 0.3,
                fill: '#fa0'
            },
            name: 'Development'
        }, {
            start: '2018-12-10',
            end: '2018-12-23',
            name: 'Testing'
        }]
    }]
});

二、Highcharts.ganttChart甘特图核心配置解析

1、inverted: true(倒置甘特图最关键)

普通默认甘特图:

  • Y轴:任务名称(上下排列)
  • X轴:时间(从左向右推移)

开启 inverted:true 坐标轴互换:

  • X轴:任务名称(横向排布)
  • Y轴:时间轴(从上往下递增,时间向下流动)>

也就是你所说"翻转向下"的效果,时间顺着页面从上到下走。

2、坐标轴配置

复制代码
xAxis: [{opposite: false},{opposite: false}]
yAxis: {
    uniqueNames: true,
    opposite: true
}
  • uniqueNames:true:任务名称唯一标识,避免重复任务渲染错位
  • opposite:true:将Y轴(时间刻度)放置在图表右侧,适配倒置布局,防止时间刻度与任务标签互相遮挡

3、任务数据字段说明

字段和标准甘特图完全一致,不受倒置影响

字段 说明
start 任务开始日期
end 任务结束日期
completed.amount 完成进度(0‑1),条形内部渲染进度色块
fill 单条任务条形自定义颜色(可选)
name 任务名称

4、无障碍 accessibility 配置

键盘导航、屏幕阅读器文本描述,汉化后用于读取出任务名、完成百分比、起止日期,适配无障碍系统。

三、倒置甘特图与普通甘特图对比

类型 任务排布 时间流动方向 典型适用场景
标准甘特图 垂直上下排列 从左→右 常规项目进度看板
倒置(inverted)甘特图 水平横向排列 从上→向下 时间流、流程时序图、事件时间线、瀑布式排期

四、开发常见坑点

  1. 坐标轴标签错乱:倒置后X/Y互换,不要沿用普通甘特图的坐标轴样式配置
  2. 任务条形方向错误 :inverted 必须写在顶层 chart 对象下,不能写在series
  3. 时间标签被截断 :倒置后时间轴跑到Y轴,建议开启 yAxis.opposite:true,刻度放右侧,提升可读性
  4. 甘特图模块为Highcharts组件
相关推荐
AllData公司负责人6 分钟前
【产品便捷使用一】AIIData 数据中台:企业基础版核心能力支持,一站式全链路数据处理实操指南
大数据·前端·数据治理·数据可视化·数据开发·数据服务·数据接入
vipxieliang6 分钟前
JavaScript 模板字符串与标签模板:不只是拼接
前端·javascript
恋猫de小郭25 分钟前
Flutter 开始支持 Jetpack Compose Platform View
android·前端·flutter
时间的拾荒人33 分钟前
CMake 实战指南:从基础语法到静态库/动态库制作与链接
开发语言·c++·面试
IT_陈寒1 小时前
React实战技巧总结
前端·人工智能·后端
xyouyuweizhu1 小时前
Java InetAddress 详解:从 IP 地址表示到主机名解析
java·开发语言·python
陈随易8 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
布莱克60510 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
LabVIEW开发10 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
Dream-Y.ocean10 小时前
鸿蒙PC平台宅匠 3D 室内设计适配实战:基于 Electron 壳方案的 Three.js 双渲染引擎与参数化户型编辑器开发
javascript·3d·harmonyos