There really is a lot of variables- braking, tyres, surface, wind, aero position etc.
For some examples with calories computed from a power meter ( with 86kg rider):
Road bike (Giant TCR):
68km/1,217m road ride @20.1km/h : 3,202 kcal
153km/1,155m road ride @25.0km/h : 3,564 kcal
163km/1,252m road ride @27.7km/h : 5,859 kcal
Gravel bike (Cannondale slate):
100km/860m road ride @20km/h : 2,209 kcal
120km/737m (80% off road) @22km/h : 3,234 kcal
88km/2025m (35% off road) @15.0km/h : 3,474 kcal
167km/1,068m (40% off road) @22.7km/h : 4,212 kcal
Mountain bike (Cotic solaris):
23km/200m @15.4km/h : 1,176 kcal
43km/330m @18.2km/h : 1,317 kcal
41km/845m @13.3km/h : 3,166 kcal
Power meter obviously only knows what effort you are putting into the pedals too – an hour on road is far easier than an hour off road on the upper body etc – not sure if anyone has ever quantified that though?
On the gravel bike Strava regularly over estimates (compared to my PM) my riding buddies calorie usage by 10-20% compared with me (similar weight/bikes etc) he doesn’t use PM or HR monitor.