I wish to have a native Gantt chart

I’m working on what should be a pretty basic visualization: plotting events on the y-axis and time on the x-axis, with horizontal bars showing the duration from start to end time. Sounds like a textbook use case for a Gantt chart, right?

Well, I’ve tried everything:

  • Time series panel — not built for this.
  • Bar gauges — nope.
  • State timeline — close, but not reusable in the way the old Gantt plugin was.

The marcusolsson-gantt-panel plugin used to do exactly what I needed, but it’s no longer maintained. The author recommends exploring the state timeline panel instead — but after trying it myself and reading many similar posts, I can confidently say: it’s not the same. It doesn’t offer the same flexibility or clarity for visualizing event durations.

If nothing existing can be reused or repurposed for this, then why not build a core Gantt chart panel into Grafana? This kind of visualization is essential for many use cases - monitoring pipelines, job scheduling, process tracking, etc.

I really hope someone on the team is working on this. Thanks for listening and sorry for the rant!

2 Likes

I never had to use Gantt chart in Grafana, nor that I maintain any of the plugins. Could you detail a bit more what’s missing in State timeline compared to Marcus’ plugin ?

Thanks for jumping in! I totally get that the State Timeline panel is designed for a different use case, but here’s where I ran into trouble trying to use it for event duration visualization:

  1. Padding with nulls: To show durations that occur at specific times (e.g., a task from 04:00 to 04:11), I had to pad the data with nulls or dummy values for all the times when that event wasn’t active. This gets messy fast, especially when events are sparse or irregular.
  2. Infinite end times: The State Timeline assumes that the last state continues indefinitely. That makes sense for monitoring stateful systems, but it’s a problem when I want to show discrete durations—like a task that ended 10 minutes ago and isn’t currently active. There’s no clean way to say “this event ended and nothing followed.”

So while I understand the design philosophy behind State Timeline, it’s a bit too rigid for use cases where I just want to show event durations at various points in time—especially when:

  • Events don’t happen continuously.
  • Some events overlap.
  • Some events are in the past and not currently active.

Have you ever needed to visualize discrete event durations like this? If so, how did you approach it?

I played a bit with State timeline, and I believe the main issue is about the data format expected. I would be easier to use as a Gantt with a table formated like:

| Start time | End time | Task | State     |
|------------|----------|------|-----------|
| 09:00      | 09:05    | A    | Preparing |
| 09:00      | 09:10    | B    | Preparing |
| 09:15      | 09:20    | C    | Working   |

This would allow for simple SQL queries (as I don’t expect calendar events to be stored in a TSDB)

State timeline can display discrete events when using start / end / state format.

But it’s cumbersome to use as it has been designed for timeseries. This following example is kind-of-incorrect™:

Beside start/end columns, it expects one column for each task. On line 1, I defined task A to start at 9:00 and end at 9:06. On line 2, I defined task A (again, because the column exists) to be nulled from 9:03 to 9:04. Result: task starts at 9:00, ends at 9:03, doesn’t start again from 9:04 to 9:06

I am providing contradicting informations to a perfectly working plugin. That’s why I believe adding a newly supported format of table would makes State timeline a good option for Gantt.

Would it make sense ? It’s not a promise to implement anything as I am not managing any of the plugins, just personal interest and curiousity.

Yes, exactly. The State Timeline panel works well for continuous state tracking, but it’s not ideal when repurposed as a Gantt chart. It expects time series data with one column per task and continuous states, which makes it hard to represent discrete event durations - especially when events overlap.

A Gantt chart and a state timeline serve different purposes. I’d really like to see a core Gantt panel in Grafana that supports start/end durations, overlap handling, and a simple table format. Repurposing State Timeline for this feels like a workaround, not a solution.

1 Like

currently there is no such core plugin.

1 Like

I don’t get why adding the ability to read a new table format in State Timeline would be a workaround and not a solution. What would be missing ?