fu=.;
f=.;
L[fu_,p_]:= Maximize[x p -fu[x],x]
xmindef=-5;
xmaxdef=5;
fmindef:=Min[-fstar[po[xmindef]],-fstar[po[xmaxdef]],0]-3
fmaxdef:=Max[fstar[po[xmindef]]+f[xmindef],fstar[po[xmaxdef]]+f[xmaxdef],0]+3
fstarmindef:=Min[fstar[po[xmindef]],fstar[po[xmaxdef]],Minimize[fstar[p],p][[1]],0]-3
fstarmaxdef:=Max[fstar[po[xmindef]],fstar[po[xmaxdef]],0]+3

(*f[x_]=x^2/2;
f[x_]=x^2/2+5;
f[x_]=x^2/2-5;
f[x_]=x^2/2+5-2x;*)
f[x_]=(x+3)^2/9+6;
fstar[p_]=L[f,p][[1]]
po[a_]:=f'[a];

xmin=xmindef;
xmax=xmaxdef;
fmin=fmindef;
fmax=fmaxdef;
fstarmin=fstarmindef
fstarmax=fstarmaxdef

Manipulate[
{Show[
{
Plot[{po[xo]x,f[x],po[xo]x-fstar[po[xo]]},{x,-5,5},ImageSize->{500,500/GoldenRatio},AspectRatio->1/GoldenRatio,PlotRange->{{xmin,xmax},{fmin,fmax}}],
Graphics[Line[{{xo,f[xo]},{xo,po[xo]xo}}]],
Graphics[{PointSize[Medium],Point[{{0,0},{0,-fstar[po[xo]]},{xo,f[xo]},{xo,po[xo]xo}}]}]
}],
Show[
{
Plot[{fstar[p],Piecewise[{{fstar[p],p<po[xo]},{i fstar[p],p≥po[xo]}}]},{p,po[-5],po[5]},PlotRange->{{po[xmin],po[xmax]},{fstarmin,fstarmax}}, AxesOrigin->{0,0},PlotStyle->{Transparent,Black},ImageSize->{500,500/GoldenRatio},AspectRatio->1/GoldenRatio],
Graphics[Line[{{po[xo],0},{po[xo],fstar[po[xo]]}}]],
Graphics[{PointSize[Medium],Point[{{po[xo],0},{po[xo],fstar[po[xo]]}}]}]
}]
},{xo,-5,5}]