Skip to main content

This is a gantt chart drawing library

Project description

PyPI - Version Downloads

elegantt

Overview

elegantt is gantt chart drawing library designed for developers and project managers who need to visualize project timeline efficiently. With support for both CSV and Mermaid formats. elegantt provides the flexibility and functionality you need to keep your projects on task.

elegantt_colab

Features

  • Simpe and intuitive API
  • Supports both CSV and Mermaid Gantt chart formats
  • customizable chat size and colors
  • Command line interface for quick usage
  • Cross-platform support

Installation

Install elegantt via pip:

pip install elegantt

Fonts Installation

To ensure proper rendering of text, install the necessary fonts:

on Ubuntsu

apt install fonts-noto-cjk

on RedHat/RockyLinux

yum install google-noto-sans-cjk-ttc-fonts.noarch

Usage

Command Line interface

Generate a Gantt chart from CSV file:

elegantt sample.csv

CSV Format Example

2023-01-01,2023-01-04,Task 1
2023-01-02,2023-01-05,Task 2
2023-01-04,2023-01-06,Task 3

generate a Gantt chart from a Mermaid format:

elegantt sample_mermaid.txt

Mermaid Format Example

gantt
    section task a
    task b            :active,  des2, 2024-05-20, 4d
    task c            :         des3, after des2, 7d

generate a Gantt chart from a Mermaid format:

elegantt sample_markdown.md

Markdown Format Example

|2024-06-15|2024-06-18|task a|
|2024-06-20|2d        |task b|
|3d        |          |task c|

As a library

integrate elegantt into your python projects for advanced usage:

import elegantt

# Define chart properties
chartsize = (720,320)
bgcolor = (255,255,255)

# Create a Gant chart object
gchart = elegantt.EleGantt( chartsize, bgcolor, today="2019-10-15")

# Draw calendar and campains
gchart.draw_calendar()
gchart.draw_campain("2019-10-15","2019-10-18","Task 1")
gchart.draw_campain("2019-10-20","2019-10-23","Task 2")
gchart.draw_campain("2019-10-24","2019-10-30","Task 3")
gchart.save("gantt_chart.png")

or auto_draw for mermaid or markdown format

import elegantt

s = """
    task a  :done, des1, 2024-06-15, 2024-06-18
    task b  :active, des2, 2024-06-20, 2d
    task c  :         des3, after des2, 3d
"""
gchart = elegantt.EleGantt(today="2024-06-18")
gchart.auto_draw(s, mode="mermaid")
gchart.save("gantt_chart.png")

If you want to specify fonts, write set_font() before draw_calendar() or auto_draw().

import elegantt

s = """
    task a  :done, des1, 2024-06-15, 2024-06-18
    task b  :active, des2, 2024-06-20, 2d
    task c  :         des3, after des2, 3d
"""
gchart = elegantt.EleGantt(today="2024-06-18")
gchart.set_font("C:\Windows\Fonts\meiryo.ttc")
gchart.auto_draw(s, mode="mermaid")
gchart.save("gantt_chart.png")

If you want to draw gantt chart on Google colab, import IPython and write like this.

import elegantt
from IPython.display import display

g = elegantt.EleGantt()
s = """
Task A: 2024-07-08,3d
Taks B: 3d
"""
g.auto_draw(s)
display(g.im)

You can set holidays like this.

gchart = elegantt.EleGantt(today="2024-06-18")
gchart.set_holidays(["2024-06-19",2024-06-25])

You can also set holidays with holidays lib.

import holidays
import pandas as pd

jp_holiday = holidays.country_holidays('JP')
my_holidays = []
days = 10

date_list = pd.date_range(
    start=pd.Timestamp("today").normalize(),
    end=pd.Timestamp("today")+pd.Timedelta(days=days)
).tolist()

for date in date_list:
  if date in jp_holiday:
    print(date, jp_holiday.get(date))
    my_holidays.append(date.strftime('%Y-%m-%d'))
  else:
    print(date)

gchart.set_holidays(my_holidays)

Lisence

This project is licensed under the MIT License, see the LICENSE.txt file for details

Contributing

We welcome contributions!

Support

For support or any questions, feel free to open an issue on our Github page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elegantt-0.0.8.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

elegantt-0.0.8-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file elegantt-0.0.8.tar.gz.

File metadata

  • Download URL: elegantt-0.0.8.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.8.10

File hashes

Hashes for elegantt-0.0.8.tar.gz
Algorithm Hash digest
SHA256 a288b1c332af75283a8597cfc8157e9ff73a9fc27a5afbc50e469a1bd4455316
MD5 952f68aae950a0a5c7dd89321a11e17d
BLAKE2b-256 196c1825239f30bc8507ebe7ef1235a176f7086b467276aeb2271ab793fd91b4

See more details on using hashes here.

File details

Details for the file elegantt-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: elegantt-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.8.10

File hashes

Hashes for elegantt-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 033b40c4a465784c8f80be2abe3c81d1574cec584e8a0210c860fe0953b96681
MD5 a108566ff6df57ee2565e2542e20d0d3
BLAKE2b-256 92bcd1a1388c8ad05870003a4b68536d85e371a102a342f00f17bd54bb007fb7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page