甘特图纵向任务、横向时间显示图表可视化开发|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组件
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
龙亘川3 天前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++