importnumpyasnpimportmatplotlib.pyplotaspltrng=np.random.default_rng(5)values=45+rng.normal(0,3,size=28)values[[6,18]]+=np.array([12,-10])# Sisipkan anomalimean=values.mean()std=values.std(ddof=1)ucl=mean+3*stdlcl=mean-3*stdfig,ax=plt.subplots(figsize=(6.4,3.6))ax.plot(values,marker="o",color="#0ea5e9")ax.axhline(mean,color="#334155",linewidth=1.3,label="Rata-rata")ax.axhline(ucl,color="#ef4444",linestyle="--",label="UCL")ax.axhline(lcl,color="#ef4444",linestyle="--",label="LCL")ax.set_xticks(range(0,len(values),4),labels=[f"W{i+1}"foriinrange(0,len(values),4)])ax.set_title("Grafik kontrol waktu penanganan panggilan")ax.set_ylabel("Waktu rata-rata (detik)")ax.grid(alpha=0.2)foridx,valinenumerate(values):ifval>uclorval<lcl:ax.annotate("Anomali",(idx,val),xytext=(idx+0.5,val+4),arrowprops=dict(arrowstyle="->",color="#ef4444"),color="#ef4444",)ax.legend(loc="upper right")fig.tight_layout()plt.show()