You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Creates a figure with 1 row and 2 columns of subplots, setting the figure size
fig, axs = plt.subplots(1, 2, figsize=(15, 5))
Sets font family for the entire plot
plt.rcParams["font.family"] = "Georgia"
Plots the total ask (total number of seats available) on the first subplot
axs[0].bar(x=inbound_flights_mena_monthly_ask['date'], # X values (dates)
height=inbound_flights_mena_monthly_ask['total_ask'], # Heights of bars (total ask)
width=20) # Width of bars
Plots the total payload (total weight of cargo) on the second subplot
axs[1].bar(x=inbound_flights_mena_monthly_ask['date'], # X values (dates)
height=inbound_flights_mena_monthly_ask['total_payload'], # Heights of bars (total payload)
width=20) # Width of bars
Loops through each subplot
for ax in axs:
# Hide the right and top spines (axis lines)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# Only shows ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
# Adds gridlines to both major and minor ticks
ax.grid(which='both', linestyle='--', linewidth=0.5, color='gray', alpha=0.7)
# Sets titles for each subplot
axs[0].set_title('Average payload on Inbound Flights to Lebanon', font='Georgia', fontsize=12)
axs[1].set_title('Average Available Seat Kilometres on Inbound Flights to Lebanon', font='Georgia', fontsize=12)
# Sets x-label for each subplot
ax.set_xlabel('Month')
# Sets y-label for each subplot
axs[0].set_ylabel('Average payload (kg)')
axs[1].set_ylabel('Average Available Seat Kilometres')
Creates a figure with 2 rows and 1 column of subplots, setting the figure size
fig, axs = plt.subplots(2, 1, figsize=(10, 10))
Sets font family for the entire plot
plt.rcParams["font.family"] = "Georgia"
Plots the total number of seats on inbound flights monthly on the first subplot
axs[0].bar(x=inbound_flights_mena_monthly_all['date'], # X values (dates)
height=inbound_flights_mena_monthly_all['total_seats'], # Heights of bars (total seats)
width=20) # Width of bars
Plots the total number of seats on inbound flights yearly on the second subplot
axs[1].bar(x=inbound_flights_mena_yearly_all['date'], # X values (years)
height=inbound_flights_mena_yearly_all['total_seats'], # Heights of bars (total seats)
width=30) # Width of bars
Loops through each subplot
for ax in axs:
# Hides the right and top spines (axis lines)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# Only shows ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
# Adds gridlines to both major and minor ticks
ax.grid(which='both', linestyle='--', linewidth=0.5, color='gray', alpha=0.7)
# Sets title for the first subplot
axs[0].set_title('Number of Seats on Inbound Flights to Lebanon (Monthly)', font='Georgia', fontsize=12)
# Sets title for the second subplot
axs[1].set_title('Number of Seats on Inbound Flights to Lebanon (Yearly)', font='Georgia', fontsize=12)
# Sets x-label for each subplot
ax.set_xlabel('Month' if ax == axs[0] else 'Year')
# Sets y-label for each subplot
ax.set_ylabel('Number of seats (in thousands)')
fig, ax = plt.subplots(figsize=(8, 6))
bar_width = 0.5 # Width of the bars
colors = ['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231',
'#911eb4', '#42d4f4', '#f032e6', '#bfef45', '#fabed4'] # List of colors for the bars
Plots each category for each year
for i, year in enumerate(years):
bottom = np.zeros(len(years)) # Initializes the bottom values for stacked bars
sorted_df = df[df['date'] == year].sort_values(by='total_seats', ascending=False) # Sorts the data for the current year
# Gets unique categories for the current year
categories = sorted_df['origin_country'].unique()
# Plots each category for the current year
for j, category in enumerate(categories):
# Gets the total seats for the current category and year
value = sorted_df[(sorted_df['date'] == year) & (sorted_df['origin_country'] == category)]['total_seats'].sum()
if value > 0:
# Plots a bar for the current category and year, with stacking
ax.bar(year, value, bar_width, bottom=bottom[i], color=country_color_map[category], label=category if i == 0 else "")
bottom[i] += value # Updates the bottom value for stacking
Sets axis labels
ax.set_xlabel('Year')
ax.set_ylabel('Number of seats (in thousands)')
Creates legend patches for each country
legend_patches = [mpatches.Patch(color=color, label=country) for country, color in country_color_map.items()]
ax.spines['right'].set_visible(False) # Hides the right spine
ax.spines['top'].set_visible(False) # Hides the top spine
ax.yaxis.set_ticks_position('left') # Shows ticks only on the left spine
ax.xaxis.set_ticks_position('bottom') # Shows ticks only on the bottom spine
ax.grid(which='both', linestyle='--', linewidth=0.5, color='gray', alpha=0.7) # Add gridlines
Sets plot title and rotation for x-axis ticks
ax.set_title('Top 5 countries with number of inbound flight seats')
plt.xticks(rotation=0)
### Suggested comments
Creates a figure with 1 row and 2 columns of subplots, setting the figure size
fig, axs = plt.subplots(1, 2, figsize=(15, 5))
Sets font family for the entire plot
plt.rcParams["font.family"] = "Georgia"
Plots the total ask (total number of seats available) on the first subplot
axs[0].bar(x=inbound_flights_mena_monthly_ask['date'], # X values (dates)
height=inbound_flights_mena_monthly_ask['total_ask'], # Heights of bars (total ask)
width=20) # Width of bars
Plots the total payload (total weight of cargo) on the second subplot
axs[1].bar(x=inbound_flights_mena_monthly_ask['date'], # X values (dates)
height=inbound_flights_mena_monthly_ask['total_payload'], # Heights of bars (total payload)
width=20) # Width of bars
Loops through each subplot
for ax in axs:
# Hide the right and top spines (axis lines)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
Adds a subtitle to the first subplot
subtitle = 'Source: Global Aviation Dashboard (World Bank)'
axs[0].text(0, -0.15, subtitle, ha='left', va='center', transform=axs[0].transAxes,
fontsize=10, color='black', weight='normal')
Creates a figure with 2 rows and 1 column of subplots, setting the figure size
fig, axs = plt.subplots(2, 1, figsize=(10, 10))
Sets font family for the entire plot
plt.rcParams["font.family"] = "Georgia"
Plots the total number of seats on inbound flights monthly on the first subplot
axs[0].bar(x=inbound_flights_mena_monthly_all['date'], # X values (dates)
height=inbound_flights_mena_monthly_all['total_seats'], # Heights of bars (total seats)
width=20) # Width of bars
Plots the total number of seats on inbound flights yearly on the second subplot
axs[1].bar(x=inbound_flights_mena_yearly_all['date'], # X values (years)
height=inbound_flights_mena_yearly_all['total_seats'], # Heights of bars (total seats)
width=30) # Width of bars
Loops through each subplot
for ax in axs:
# Hides the right and top spines (axis lines)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
Adds a subtitle to the second subplot
subtitle = 'Source: Global Aviation Dashboard (World Bank)'
axs[1].text(0, -0.15, subtitle, ha='left', va='center', transform=axs[1].transAxes,
fontsize=10, color='black', weight='normal')
Imports necessary libraries
import numpy as np
import matplotlib.patches as mpatches
df: DataFrame containing data about top categories and seats
sorted_df: DataFrame sorted by date and total seats in descending order
df = top_categories_seats
sorted_df = df.sort_values(by=['date', 'total_seats'], ascending=[True, False])
Gets unique years
years = sorted_df['date'].unique()
Creats a figure and axis object
fig, ax = plt.subplots(figsize=(8, 6))
bar_width = 0.5 # Width of the bars
colors = ['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231',
'#911eb4', '#42d4f4', '#f032e6', '#bfef45', '#fabed4'] # List of colors for the bars
Plots each category for each year
for i, year in enumerate(years):
bottom = np.zeros(len(years)) # Initializes the bottom values for stacked bars
sorted_df = df[df['date'] == year].sort_values(by='total_seats', ascending=False) # Sorts the data for the current year
Sets axis labels
ax.set_xlabel('Year')
ax.set_ylabel('Number of seats (in thousands)')
Creates legend patches for each country
legend_patches = [mpatches.Patch(color=color, label=country) for country, color in country_color_map.items()]
Adds legend to the plot
ax.legend(handles=legend_patches, loc='upper center', frameon=False, bbox_to_anchor=(1.15, 1))
Customizes plot aesthetics
ax.spines['right'].set_visible(False) # Hides the right spine
ax.spines['top'].set_visible(False) # Hides the top spine
ax.yaxis.set_ticks_position('left') # Shows ticks only on the left spine
ax.xaxis.set_ticks_position('bottom') # Shows ticks only on the bottom spine
ax.grid(which='both', linestyle='--', linewidth=0.5, color='gray', alpha=0.7) # Add gridlines
Sets plot title and rotation for x-axis ticks
ax.set_title('Top 5 countries with number of inbound flight seats')
plt.xticks(rotation=0)
Adds a subtitle to the plot
subtitle = 'Source: Global Aviation Dashboard (World Bank)'
ax.text(0, -0.15, subtitle, ha='left', va='center', transform=ax.transAxes,
fontsize=10, color='black', weight='normal')
The text was updated successfully, but these errors were encountered: