Gantt
simple gantt chart in python
Install / Use
/learn @stefanSchinkel/GanttREADME
README
Gantt is a python class to produce, well, Gantt charts. The charts are kept (very) simple, using a discreet time scale, unicolor bars and optional milesstones.
Background
Gantt charts are commonly used in project management. I wanted to make one myself and LibreProject was way too involved for the project in question. Hence I used OpenOffice Calc and made a plain horizontal bar chart. That took little time but was ok. Then I needed to add milestones (basically just a marker) to the chart. I completely failed doing this in OpenOffice (and still don't know how to do that ...).
Long story short: I don't know how to excel.
Basic usage
from gantt import Gantt
g = Gantt('./sample.json')
g.render()
g.show() # or save w/ g.save('foo.png')
Or simply call runner.py
Data structure
All data is provided as a JSON structure that has to contain:
- a key packages containing an array of package definitions with label, end and start. Start and end values are discreet.
- a title string (may contain TeX, escaped)
{
"packages": [
{ "label" : "WP 1-1",
"start": 0,
"end": 2,
"milestones" : [2],
"legend": "worker one"
},
{ "label" : "WP 1-2",
"start": 2,
"end": 4,
"milestones" : [3, 4]
}
],
"title" : " Sample GANTT for \\textbf{myProject}",
"xlabel" : "time (weeks)",
"xticks" : [2,4,6,8,10,12]
}
The milestones, colors and legend entry are optional as are the label for the x-axis and the definition of the tickmarks. The title may contain TeX, but make sure your system supports it. For
See sample.json for the data used to produce the image below.
Installation
The requirements are rather limited and can installed from the requirements file. I recommend using a virtual environment for that:
# virtualenv setup, recommended
python3 -m venv .venv
source .venv/bin/activate
# actual install for requirements
pip install -r requirements.txt
# to install dev dependencies too run
# pip install -r requirements-dev.txt
ToDo
- nicer data structure (JSON) :white_check_mark:
- dedicated class for packages :white_check_mark:
- dynamic TeX support :white_check_mark:
- add parameter object/dict for more control over colors etc :construction:
Screenshot

See sample.json for definition.
Supported Versions
Support is a bit much to say. The initial version was developed on 3.6 and worked just fine. With github-actions I can only test 3.7+ and this works fine (up to 3.12 currently). But basically, if you get numpy/matplotlib to run, all should be fine.
Related Skills
node-connect
354.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
