Free particle

radialNodesFree[l_,krmax_]:=Table[N[BesselJZero[l+1/2,n]],{n,1,Ceiling[krmax/π-l/2]}]

angularNodes[l_]:=ArcCos[Re[N[x/.Solve[LegendreP[l,x]==0,x]]]]
angularNodes[0]={};

(* nodes of |kl0> *)
nodeLinesFree[l_,krmax_]:={Map[Circle[{0,0},#]&,radialNodesFree[l,krmax]],If[l>0,Point[{0,0}]],Map[Line[{-krmax{Sin[#],Cos[#]},krmax{Sin[#],Cos[#]}}]&,angularNodes[l]]}

(* nodes of |kl0> *)
tabfreen=Table[Graphics[nodeLinesFree[l,30],PlotRange->{{-25,25},{-25,25}}],{l,0,10}]

SetDirectory[NotebookDirectory[]];
Do[Export["free_standing_wave_l="<>ToString[n-1]<>".pdf",tabfreen[[n]]],{n,1,Length[tabfreen]}]

Coulomb potential

radialCoulomb[l_,kr_,η_]=Exp[η π/2]Abs[Gamma[l+1-I η]]/(2l+1)! (((2 kr))^l)Re[Exp[-I kr]Hypergeometric1F1[l+1+I η,2l+2,2I kr]]

radialNodesCoulomb[l_,η_,krmax_]:=Block[{nmax,krn,krm},
nmax=Ceiling[(krmax+η Log[2 krmax]-l π/2+Arg[Gamma[l+1-I η]])/π];
krn=Table[N[η ProductLog[((E^(c/η))/(2 η))]/.{c->l π/2-Arg[Gamma[l+1-I η]]+n π}],{n,0,nmax}];
Table[kr/.FindRoot[kr radialCoulomb[l,kr,η]==0,{kr,(krn[[i]]+krn[[i+1]])/2,krn[[i]],krn[[i+1]]}],{i,1,Length[krn]-1}]
]

angularNodes[l_]:=ArcCos[Re[N[x/.Solve[LegendreP[l,x]==0,x]]]]
angularNodes[0]={};

(* nodes of |kl0> *)
nodeLinesCoulomb[l_,η_,krmax_]:={Map[Circle[{0,0},#]&,radialNodesCoulomb[l,η,krmax]],If[l>0,Point[{0,0}]],Map[Line[{-krmax{Sin[#],Cos[#]},krmax{Sin[#],Cos[#]}}]&,angularNodes[l]]}

(* nodes of |kl0> *)
Table[Graphics[nodeLinesCoulomb[l,1,Sqrt[2]25],PlotRange->{{-25,25},{-25,25}}],{l,0,7}]

tabn=With[{krmax=20},Table[Graphics[{{GrayLevel[0.2],nodeLinesFree[l,Sqrt[2]krmax]},{Thick,Black,nodeLinesCoulomb[l,1,Sqrt[2]krmax]}},PlotRange->{{-krmax,krmax},{-krmax,krmax}}],{l,0,7}]]

SetDirectory[NotebookDirectory[]];
Do[Export["coulomb_standing_wave_eta=1_l="<>ToString[n-1]<>".pdf",tabn[[n]]],{n,1,Length[tabn]}]