Good morning Louise Burke,
You can accomplish this using different channels (i.e. categories) of events. For example, you may have one calendar where you publish upcoming training, one calendar for social events and one for company townhalls.
When you are on the channel, click on the drop down which gets you to the menu and click on "Settings". If you scroll all the way to the bottom you should see the option to pick a channel colour. For accessibility reasons the lighter colours will automatically have dark text and the darker colours will automatically have light text (to maintain the appropriate contrast ratio).
You can pull all of the different channels into a single widget so the outcome should look something like this: