from fastapi import FastAPI, HTTPException from argopy import DataFetcher import matplotlib.pyplot as plt from fastapi.responses import StreamingResponse import io app = FastAPI() @app.get("/plot_trajectory") def plot_trajectory(lon_min: float, lon_max: float, lat_min: float, lat_max: float, depth_min: float, depth_max: float, date_start: str, date_end: str): try: # Create data fetcher with user inputs f = DataFetcher().region([lon_min, lon_max, lat_min, lat_max, depth_min, depth_max, date_start, date_end]) # Plotting plt.figure() f.plot('trajectory', add_legend=False) buf = io.BytesIO() plt.savefig(buf, format='png') buf.seek(0) plt.close() return StreamingResponse(buf, media_type="image/png") except Exception as e: raise HTTPException(status_code=500, detail=str(e)) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)