importmatplotlib.pyplotaspltimportnumpyasnpimportrequestsfrommatplotlib.animationimportFuncAnimationbase_url="http://10.0.0.2:5555"mode="standard_v2"# increase this for better data quality at the cost of speedn_scans=5# use wavenumbers as x-axiswn=requests.get(f"{base_url}/api/spectrometer/wavenumbers").json()# set up plotplt.ion()fig,ax=plt.subplots()(line,)=ax.plot(wn,np.zeros_like(wn))ax.set_xlabel("Wavenumber (cm⁻¹)")ax.set_ylabel("Absorbance")ax.set_title("Live Absorbance Spectrum")plt.show()deffetch_and_update(_):response=requests.get(f"{base_url}/api/spectrometer/spectra/processed/{mode}",params={"n_scans":n_scans},).json()# use absorbance values as y-axisy=np.array(response)line.set_ydata(y)ax.relim()ax.autoscale_view()fig.canvas.draw()fig.canvas.flush_events()# fetch_and_update is called every secondanim=FuncAnimation(fig,fetch_and_update,interval=1000)plt.show(block=True)