Help with either Parallel Process or Sankey Diagram?

So I have some data that is read in from a CSV. Assume these are in dataframes named summer, fall, & winter.

data

The number of workers varies by season. As does the type of fruit picked.

What I want to create is something like this (but with real data and not in powerpoint lol):

Each axis or row is a season. Each worker connects to their name next season, but even if they donโ€™t work next season, their output is still shown. Connecting the workers names between the seasons is one line/connection per fruit picked the width being based of the count.

But I canโ€™t for the life of me figure out how to get the data arranged in a way to get it graphing right. If I just do workers on the left and all the seasons on the far right it works, but I want to be be able to eventually show a filter for say apples and highlight the path of all apple picks by each person each season.

Hey @kardiff welcome to the forums. I donโ€™t have experience with this graph type. It seems to be quite complex indeed. I tried with plotly.express, I leave my intents here just in case it might inspire you. Spoiler: it is not an answer to your question, unfortunately.

Data: csv_parcords - Google Drive

import pandas as pd
import plotly.express as px

spring = pd.read_csv('page-1_table-1.csv')
spring['season'] = 'spring'
summer = pd.read_csv('page-1_table-2.csv')
summer['season'] = 'summer'
fall = pd.read_csv('page-1_table-3.csv')
fall['season'] = 'fall'

df = pd.concat([spring, summer, fall])
df = pd.melt(df, id_vars=['Fruit', 'season'], var_name='name', value_vars=df.columns[1:-1])

fig = px.parallel_categories(
    df, 
    dimensions=['Fruit', 'season', 'name']
)
fig.show()

I think you would need to rearrange the df so that you have each season as different column.

What youโ€™ve drawn looks a bit like a series of bar charts to me, with one bar chart per worker (and x=season, y=production, color=fruit). Would that approach give you something close enough to what you are trying to do?