Forum Discussion

jaymeyer's avatar
jaymeyer
Regular Visitor
1 year ago
Solved

Stacked Bar chart as a timeline for individual days

Hi

 

I'm hoping to get help creating a stacked bar graph/timeline similar to the one described in this post: Solved: Stacked Bar Chart as timeline - Microsoft Fabric Community

 

The result I am looking for should resemble something like this where each activity is a different colour:

 

Iinitially I tried to create a 'collapsed' gantt chart' but I cannot make each activity a different colour and it's too small:

 

This is an excerpt of some of the data I am working with for one day. Ideally I would like to show a separate "stacked bar graph timeline" for each day.

  • jaymeyer's avatar
    jaymeyer
    1 year ago

    Alright, I'm pretty new to this and it took me a while to figure out but I've made some progress and would like your opinion to see if I've done this 'correctly' or if it could be more efficient or if you see any flaws. But this is more or less achieving what I've set out to do and could not have done it without your help!

     

    The main change is I created a "ShiftID" to deal with the wrapping for past midnight shifts as sometimes crews can end and start a shift on the same day:

    ShiftID =
    [Team]
      & "-" &
    FORMAT ( [Date], "ddmmyyyy" )
      & "-" &
    [Machine]

     

     

    This is the updated JSON:

    {
      "data": {"name": "dataset"},
      "transform": [
        {
          "window": [
            {"op": "min", "field": "StartTime", "as": "ShiftStart"}
          ],
          "groupby": ["ShiftID"]
        },
        {
          "calculate": "(datetime(datum.StartTime) - datetime(datum.ShiftStart)) / (1000 * 60 * 60)",
          "as": "OffsetStart"
        },
        {
          // Similarly for EndTime
          "calculate": "(datetime(datum.EndTime) - datetime(datum.ShiftStart)) / (1000 * 60 * 60)",
          "as": "OffsetEnd"
        }
      ],
      "mark": "bar",
      "encoding": {
        "y": {"field": "ShiftID", "type": "nominal"},
        "x": {
          "field": "OffsetStart",
          "type": "quantitative",
          "stack": null
        },
        "x2": {"field": "OffsetEnd"},
        "color": {"field": "Description", "type": "nominal"}
      }
    }

7 Replies