Basic

A={{-a,1},{b,1}}

ev[a_,b_]:=N[Sort[Chop[Eigenvalues[A]]]]
color[{x_,y_}]:=Which[And[Not[Im[x]==0],Re[x]>=0],Lighter[Red],And[Not[Im[x]==0],Re[x]<0],Lighter[Blue],And[x≥ 0,y≥ 0 ],Red,And[x<0,y<0],Blue,And[x≤0,y>0],Green]
ArrayPlot[Reverse[Table[color[ev[a,b]],{a,-4,4,8/300.},{b,-4,4,8/300.}]\[Transpose]],Frame->True,BaseStyle->{18,Bold},FrameLabel->{b,a},ImageSize->600];

Mod

A={{b,0.1(a+b)^3},{0,a+2b}}

TP[A_,etc_:{-5,5,-5,5,100}]:=Module[{ev,color,la=etc[[1]],ha=etc[[2]],lb=etc[[3]],hb=etc[[4]],steps=etc[[5]]},ev[a_,b_]:=N[Sort[Chop[Eigenvalues[A]]]];
color[{x_,y_}]:=Which[And[Not[Im[x]==0],Re[x]>=0],Lighter[Red],And[Not[Im[x]==0],Re[x]<0],Lighter[Blue],And[x≥ 0,y≥ 0 ],Red,And[x<0,y<0],Blue,And[x≤0,y≥0],Green];
MatrixPlot[Reverse[Table[color[ev[a,b]],{a,la,ha,(ha-la)/steps},{b,lb,hb,(hb-lb)/steps}]\[Transpose]],AspectRatio->(hb-lb)/(ha-la),Frame->True,BaseStyle->{14,Bold},FrameLabel->{b,a},ImageSize->600,FrameTicks->None,PlotLabel->Row[{"(dY/dt) = ",A," · Y"}]]
]

t4=TP[A,{-5,5,-5,5,100}]

Take Two

A={{a,1},{b,1}};
c1=ContourPlot[Det[A],{a,-4,4},{b,-4,4},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},ContourShading->{Green,None},PlotPoints->100,PlotRange->All];
c2=ContourPlot[Tr[A],{a,-4,4},{b,-4,4},ContourStyle->None,RegionFunction->Function[{a,b},Det[A]>0],Contours->{0},ContourShading->{Blue,Red},PlotPoints->100,PlotRange->All];
c2a=ContourPlot[Tr[A],{a,-4,4},{b,-4,4},ContourStyle->{AbsoluteThickness[3],White},RegionFunction->Function[{a,b},Det[A]>0],Contours->{0},ContourShading->{None,None},PlotPoints->100,PlotRange->All];
c3=ContourPlot[Tr[A]^2-4Det[A],{a,-4,4},{b,-4,4},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},RegionFunction->Function[{a,b},Tr[A]>0],ContourShading->{Lighter[Red],None},PlotPoints->100,PlotRange->All];
c3a=ContourPlot[Tr[A]^2-4Det[A],{a,-4,4},{b,-4,4},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},RegionFunction->Function[{a,b},Tr[A]<0],ContourShading->{Lighter[Blue],None},PlotPoints->100,PlotRange->All];
c4=Show[{c2,c3,c3a,c1,c2a},BaseStyle->{14,Bold},FrameLabel->{a,b},ImageSize->600,PlotLabel->GraphicsGrid[{{Graphics[{Lighter[Blue],Disk[]}],Graphics[{Blue,Disk[]}],Graphics[{Green,Disk[]}],Graphics[{Red,Disk[]}],Graphics[{Lighter[Red],Disk[]}]},{"Spiral Sink","Sink","Saddle","Source","Spiral Source"}},BaseStyle->{12,Bold},ImageSize->250]]

TP2[A_,{a_,la_,ha_},{b_,lb_,hb_}]:=Module[{c1,c2,c2a,c3,c3a,B},B=Function[{a,b},A];c1=ContourPlot[Det[B[a,b]],{a,la,ha},{b,lb,hb},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},ContourShading->{Green,None},PlotPoints->100,PlotRange->All];
c2=ContourPlot[Tr[B[a,b]],{a,la,ha},{b,lb,hb},ContourStyle->None,RegionFunction->Function[{a,b},Det[B[a,b]]>0],Contours->{0},ContourShading->{Blue,Red},PlotPoints->100,PlotRange->All];
c2a=ContourPlot[Tr[B[a,b]],{a,la,ha},{b,lb,hb},ContourStyle->{AbsoluteThickness[3],White},RegionFunction->Function[{a,b},Det[B[a,b]]>0],Contours->{0},ContourShading->{None,None},PlotPoints->100,PlotRange->All];
c3=ContourPlot[Tr[B[a,b]]^2-4Det[B[a,b]],{a,la,ha},{b,lb,hb},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},RegionFunction->Function[{a,b},Tr[B[a,b]]>0],ContourShading->{Lighter[Red],None},PlotPoints->100,PlotRange->All];
c3a=ContourPlot[Tr[B[a,b]]^2-4Det[B[a,b]],{a,la,ha},{b,lb,hb},ContourStyle->{AbsoluteThickness[3],White},Contours->{0},RegionFunction->Function[{a,b},Tr[B[a,b]]<0],ContourShading->{Lighter[Blue],None},PlotPoints->100,PlotRange->All];
Show[{c2,c3,c3a,c1,c2a},BaseStyle->{16,Bold},Frame->None,Axes->True,AxesLabel->{a,b},ImageSize->600,PlotLabel->GraphicsGrid[{{Graphics[{Lighter[Blue],Disk[]}],Graphics[{Blue,Disk[]}],Graphics[{Green,Disk[]}],Graphics[{Red,Disk[]}],Graphics[{Lighter[Red],Disk[]}]},{"Spiral Sink","Sink","Saddle","Source","Spiral Source"}},BaseStyle->{12,Bold},ImageSize->250]]]
TP2[{{b-a,a^3},{Sin[b],1}},{a,-4,4},{b,-4,4}]
TP2[{{a,1},{b,1}},{a,-4,4},{b,-4,1}]

Manipulate

Manipulate[A:={{a11,a12},{a21,a22}};
p0=ContourPlot[Tr[A],{a,-5,5},{b,-5,5},ContourStyle->None,RegionFunction->Function[{a,b},Det[A]>0],Contours->{0},ContourShading->{Blue,Red},PlotRange->All];
p1=ContourPlot[Tr[A]^2-4Det[A],{a,-5,5},{b,-5,5},ContourStyle->{AbsoluteThickness[5],White},Contours->{0},RegionFunction->Function[{a,b},Tr[A]>0],ContourShading->{Lighter[Red],None},PlotRange->All];
p2=ContourPlot[Tr[A]^2-4Det[A],{a,-5,5},{b,-5,5},ContourStyle->{AbsoluteThickness[5],White},Contours->{0},RegionFunction->Function[{a,b},Tr[A]<0],ContourShading->{Lighter[Blue],None},PlotRange->All];p3=ContourPlot[Det[A],{a,-5,5},{b,-5,5},ContourStyle->{AbsoluteThickness[5],White},Contours->{0},ContourShading->{Green,None},PlotRange->All];
p4=ContourPlot[Tr[A],{a,-5,5},{b,-5,5},ContourStyle->{AbsoluteThickness[5],White},RegionFunction->Function[{a,b},Det[A]>0],Contours->{0},ContourShading->{None,None},PlotRange->All];
Show[{p0,p1,p2,p3,p4},BaseStyle->{14,Bold},Frame->None,Axes->True,AxesLabel->{a,b},ImageSize->600,PlotLabel->GraphicsGrid[
{{Graphics[{Lighter[Blue],AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Spiral Sink  ",Graphics[{Blue,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Sink  ",Graphics[{Green,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Saddle  ",Graphics[{Lighter[Red],AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Spiral Source  ",Graphics[{Red,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Source  "}},
BaseStyle->{12,Bold},ImageSize->{550,50}]],Grid[{{ "A =",Control[{{a11,a,""}}],Control[{{a12,b,""}}]},{SpanFromAbove,Control[{{a21,-1,""}}],Control[{{a22,0,""}}]}}],ControlType->InputField]

Manipulate 2

Manipulate[A:={{a11,a12},{a21,a22}};
p0=ContourPlot[Tr[A],{a,-5,5},{b,-5,5},ContourStyle->None,RegionFunction->Function[{a,b},Det[A]>0],Contours->{0},ContourShading->{Blue,Red},PlotPoints->30,PlotRange->All];
p1=ContourPlot[Tr[A]^2-4Det[A],{a,-5,5},{b,-5,5},ContourStyle->None,Contours->{0},RegionFunction->Function[{a,b},Tr[A]>0],ContourShading->{LightRed,None},PlotPoints->30,PlotRange->All];
p2=ContourPlot[Tr[A]^2-4Det[A],{a,-5,5},{b,-5,5},ContourStyle->None,Contours->{0},RegionFunction->Function[{a,b},Tr[A]<0],ContourShading->{LightBlue,None},PlotPoints->30,PlotRange->All];p3=ContourPlot[Det[A],{a,-5,5},{b,-5,5},ContourStyle->None,Contours->{0},ContourShading->{Green,None},PlotPoints->30,PlotRange->All];
Show[{p0,p1,p2,p3},BaseStyle->{14,Bold},Frame->None,Axes->True,AxesLabel->{a,b},ImageSize->600,PlotLabel->GraphicsGrid[
{{Graphics[{LightBlue,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Spiral Sink  ",Graphics[{Blue,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Sink  ",Graphics[{Green,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Saddle  ",Graphics[{LightRed,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Spiral Source  ",Graphics[{Red,AbsoluteThickness[8],Line[{{0,0},{1,0}}]}],"Source  "}},
BaseStyle->{12,Bold},ImageSize->{550,50}]],
Row[{ "Y'(t) = ",MatrixForm[{{Control[{{a11,a,""},{a,2a,a^2,b,a-b}}],Spacer[10],Control[{{a12,b,""},{2,a,b,b+1,0.1(a+b)^3}}]},{Control[{{a21,-1,""},{1,-1,a,0.5Abs[a],b^2}}],Spacer[10],Control[{{a22,0,""},{0,1,-1,b,a+2b}}]}}],"  · Y(t)"},BaseStyle->{12,Bold}],SynchronousUpdating->False]