Takes in an Hourly Collaboration query and returns a count table of working patterns, ranked from the most common to the least.

  signals = c("email", "IM"),
  start_hour = "0900",
  end_hour = "1700",
  top = 10,
  mode = "binary",
  return = "plot"



A data frame containing hourly collaboration data.


Character vector to specify which collaboration metrics to use:

  • "email" (default) for emails only

  • "IM" for Teams messages only

  • "unscheduled_calls" for Unscheduled Calls only

  • "meetings" for Meetings only

  • or a combination of signals, such as c("email", "IM")


A character vector specifying starting hours, e.g. "0900"


A character vector specifying starting hours, e.g. "1700"


numeric value specifying how many top working patterns to display in plot, e.g. "10"


string specifying aggregation method for plot. Valid options include:

  • "binary": convert hourly activity into binary blocks. In the plot, each block would display as solid.

  • "prop": calculate proportion of signals in each hour over total signals across 24 hours, then average across all work weeks. In the plot, each block would display as a heatmap.


String specifying what to return. This must be one of the following strings:

  • "plot"

  • "table"

See Value for more information.


A different output is returned depending on the value passed to the return


  • "plot": ggplot object. A plot with the y-axis showing the top ten working patterns and the x-axis representing each hour of the day.

  • "table": data frame. A summary table for the top working patterns.

See also

Other Visualization: afterhours_dist(), afterhours_fizz(), afterhours_line(), afterhours_rank(), afterhours_summary(), afterhours_trend(), collaboration_area(), collaboration_dist(), collaboration_fizz(), collaboration_line(), collaboration_rank(), collaboration_sum(), collaboration_trend(), create_bar_asis(), create_bar(), create_boxplot(), create_bubble(), create_dist(), create_fizz(), create_inc(), create_line_asis(), create_line(), create_period_scatter(), create_rank(), create_sankey(), create_scatter(), create_stacked(), create_tracking(), create_trend(), email_dist(), email_fizz(), email_line(), email_rank(), email_summary(), email_trend(), external_dist(), external_fizz(), external_line(), external_network_plot(), external_rank(), external_sum(), hr_trend(), hrvar_count(), hrvar_trend(), internal_network_plot(), keymetrics_scan(), meeting_dist(), meeting_fizz(), meeting_line(), meeting_quality(), meeting_rank(), meeting_summary(), meeting_trend(), meetingtype_dist_ca(), meetingtype_dist_mt(), meetingtype_dist(), meetingtype_summary(), mgrcoatt_dist(), mgrrel_matrix(), one2one_dist(), one2one_fizz(), one2one_freq(), one2one_line(), one2one_rank(), one2one_sum(), one2one_trend(), period_change(), workloads_dist(), workloads_fizz(), workloads_line(), workloads_rank(), workloads_summary(), workloads_trend(), workpatterns_area()

Other Working Patterns: flex_index(), identify_shifts_wp(), identify_shifts(), plot_flex_index(), workpatterns_area(), workpatterns_classify_bw(), workpatterns_classify_pav(), workpatterns_classify(), workpatterns_hclust(), workpatterns_report()


# Plot by default
  data = em_data,
  signals = c(

# Plot with prop / heatmap mode
  data = em_data,
  mode = "prop"