fig, axes = plt.subplots(2, 2, figsize=(13, 6))
sns.histplot(bikes['cnt'], bins=40, ax=axes[0,0], color='steelblue')
axes[0,0].set_xlabel('Daily rentals'); axes[0,0].set_title('Distribution of Rental Counts')
axes[0,1].scatter(bikes['temp'], bikes['cnt'], alpha=0.25, s=10, color='steelblue')
axes[0,1].set_xlabel('Normalised temperature'); axes[0,1].set_ylabel('Rentals')
axes[0,1].set_title('Rentals vs. Temperature')
axes[1,0].scatter(bikes['hum'], bikes['cnt'], alpha=0.25, s=10, color='#fc8d62')
axes[1,0].set_xlabel('Normalised humidity'); axes[1,0].set_ylabel('Rentals')
axes[1,0].set_title('Rentals vs. Humidity')
sns.boxplot(data=bikes, x='season', y='cnt', ax=axes[1,1], palette='Set2')
axes[1,1].set_xlabel('Season (1=Spring … 4=Winter)'); axes[1,1].set_ylabel('Rentals')
axes[1,1].set_title('Rentals by Season')
plt.suptitle('Daily Bike Rentals — Exploratory Analysis', fontsize=13, y=1.01)
plt.tight_layout(); plt.show()