Spaces:
Sleeping
Sleeping
| # plot_functions.py | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import os | |
| from linear_equilibrium_calculations import calculate_linear_equilibrium # Updated import | |
| def plot_equilibrium(demand_intercept, slope_demand, supply_intercept, supply_slope): | |
| """Generates a supply & demand equilibrium plot (Linear Model).""" | |
| Q_range = np.linspace(0, 20, 100) | |
| demand_curve = demand_intercept + (slope_demand * Q_range) | |
| supply_curve = supply_intercept + (supply_slope * Q_range) | |
| plt.figure(figsize=(6, 4)) | |
| plt.plot(Q_range, demand_curve, label="Demand Curve", color="blue") | |
| plt.plot(Q_range, supply_curve, label="Supply Curve", color="green") | |
| # Calculate equilibrium using the new function | |
| Q_eq, P_eq = calculate_linear_equilibrium(demand_intercept, slope_demand, supply_intercept, supply_slope) | |
| # Calculate CS & PS | |
| CS_top = demand_intercept | |
| PS_bottom = supply_intercept | |
| CS = 0.5 * (CS_top - P_eq) * Q_eq | |
| PS = 0.5 * (P_eq - PS_bottom) * Q_eq | |
| # Highlight CS (shaded area above equilibrium price) | |
| plt.fill_between([0, Q_eq], [CS_top, P_eq], P_eq, color="blue", alpha=0.3, label="Consumer Surplus") | |
| # Highlight PS (shaded area below equilibrium price) | |
| plt.fill_between([0, Q_eq], P_eq, [PS_bottom, P_eq], color="green", alpha=0.3, label="Producer Surplus") | |
| # Mark equilibrium point | |
| plt.scatter(Q_eq, P_eq, color="red", label=f"Equilibrium ({Q_eq}, {P_eq})") | |
| plt.xlabel("Quantity") | |
| plt.ylabel("Price") | |
| plt.legend() | |
| plt.title("Supply & Demand Equilibrium (Linear Model)") | |
| plt.grid() | |
| plot_filename = "equilibrium_plot.png" | |
| plt.savefig(plot_filename) | |
| plt.close() | |
| if not os.path.exists(plot_filename): | |
| raise FileNotFoundError("Error: Plot file not found after saving!") | |
| return plot_filename, CS, PS | |