Being a newbie to plotly please help me to address the issue of repeating labels in the unified hover on the batch numbers.
Minimally reproducible code below:
# Generate a larger dataset for 1 hour
time_range = pd.date_range(start='2024-08-09 08:00:00', periods=3600, freq='S') # 1 hour of data
batch_line1 = np.random.choice([1, 2, 0], size=len(time_range), p=[0.3, 0.3, 0.4])
batch_line2 = np.random.choice([2, 3, 0], size=len(time_range), p=[0.3, 0.3, 0.4])
batch_line3 = np.random.choice([3, 4, 0], size=len(time_range), p=[0.3, 0.3, 0.4])
batch_line4 = np.random.choice([4, 5, 0], size=len(time_range), p=[0.3, 0.3, 0.4])
# Introduce deliberate gaps (no batches running) at random points
for _ in range(5): # Introduce 5 gaps randomly
start_gap = np.random.randint(0, len(time_range) - 30)
end_gap = start_gap + 30
batch_line1[start_gap:end_gap] = 0
batch_line2[start_gap:end_gap] = 0
batch_line3[start_gap:end_gap] = 0
batch_line4[start_gap:end_gap] = 0
# Create parameters
machine_speed = np.random.randint(50, 120, size=len(time_range))
parameter1 = np.random.randint(10, 40, size=len(time_range))
parameter2 = np.random.randint(5, 20, size=len(time_range))
parameter3 = np.random.randint(7, 30, size=len(time_range))
parameter4 = np.random.randint(20, 50, size=len(time_range))
data = {
'Date_time': time_range,
'Batch_line1': batch_line1,
'Batch_line2': batch_line2,
'Batch_line3': batch_line3,
'Batch_line4': batch_line4,
'Machine_speed': machine_speed,
'Parameter1': parameter1,
'Parameter2': parameter2,
'Parameter3': parameter3,
'Parameter4': parameter4
}
df = pd.DataFrame(data)
# Reshape the data to long format using melt
df_long = pd.melt(df, id_vars=['Date_time', 'Machine_speed', 'Parameter1', 'Parameter2', 'Parameter3', 'Parameter4'],
value_vars=['Batch_line1', 'Batch_line2', 'Batch_line3', 'Batch_line4'],
var_name='Batch_Line', value_name='Batch_Number')
# Replace 0 with NaN to create gaps in the lines
df_long['Batch_Number'] = df_long['Batch_Number'].replace(0, np.nan)
# Replace 0 with NaN to create gaps in the lines
df_long['Batch_Number'] = df_long['Batch_Number'].replace(0, np.nan)
Deeply appreciate your help.