Graphing Software for Teaching I'm working on building some notes/slides for a high school calculus class I'm teaching. My reference is James Stewart's Calculus. I'd like to make my own graphs and I'm wondering if anyone knows what software is used to construct the graphs in this book. I've included a screenshot of one. I'm pretty fluent in $\LaTeX$ and Python, so I was thinking of using TikZ or Matplolib, but I'm wondering if anyone knows exactly what was used to create the graphs in Calculus.
 A: You can also consider 
the Asymptote,
which is 
deeply integrated with 
LaTeX.
For example, this figure

was coded as
//
// fig6.asy
//
settings.tex="pdflatex";

import graph;

real pagew=7cm,pageh=0.618*pagew;
size(pagew,pageh);

import fontsize;defaultpen(fontsize(7.5pt));
texpreamble("\usepackage{lmodern}");

arrowbar arr=Arrow(HookHead,size=2);

real xmin=-3,xmax=25;
real ymin=-3,ymax=19;

xaxis("$x$",xmin,xmax,above=true,arr);
yaxis("$y$",ymin,ymax,above=true,arr);


pair f(real x){
  real a2 = -0.12, a1 = 3.4, a0 = -11;
  return (x, a2*x^2+a1*x+a0);
}

pair fsec(real x){
  real a1 = 0.6, a0 = 3.7;
  return (x,a1*x+a0);
}

guide gfsec=graph(fsec,-1,22);
guide gf=graph(f,5,17);

real penw=0.8bp;

pen fPen=rgb(0.12,0.12,0.12)+penw;
pen secPen= rgb(0,0.68,0.94)+penw;
pen tanPen= rgb(0.93,0,0.55)+penw;
pen mPen=  rgb(0.4,0.78,0.5)+penw;
pen dashPen=gray(0.1)+0.5bp+linetype(new real[]{16,5})+linecap(0); //squarecap =linecap(0)
pen bracePen=darkblue+0.4bp;

real[][] tPQ=intersections(gfsec,gf);

pair P=point(gf,tPQ[0][1]);
pair Q=point(gf,tPQ[1][1]);
pair C=(Q.x,P.y);

pair tanDir=dir(gf,tPQ[0][1]);

guide gtan=(P-8*tanDir)--(P+12*tanDir);

real a=P.x, x=Q.x;

draw(gfsec,secPen);
draw(gf,fPen);
draw(gtan,tanPen);
draw(P--(P.x,0),dashPen);
draw(C--(C.x,0),dashPen);
draw(P--C--Q,mPen);

bracedefaultratio=0.12;
braceinnerangle=radians(88);
braceouterangle=radians(88);

path braceX(pair a, pair b, real offset=0, real amplitude=bracedefaultratio*length(b-a)){
  pair c=a+rotate( 45)*(unit(b-a)*offset);
  pair d=b+rotate(-45)*(unit(a-b)*offset);
  return brace(c,d,amplitude);
}

draw(braceX(C,P,0.35),bracePen);
draw(braceX(Q,C,0.35),bracePen);

dot(P--Q,UnFill);

label("$a$",(a,0),2*plain.S);
label("$x$",(x,0),2*plain.S);
label("$0$",(0,0),2*plain.SW);

label("$P(a,f(a))$",f(a),3*plain.W);
label("$Q(x,f(x))$",f(x),3*plain.E);

label("$x-a$",(P+C)/2,3*plain.S);
label("$f(x)-f(a)$",(Q+C)/2,3*plain.E);
label("$t$",relpoint(gtan,0.85),plain.NW);

A: Here's what I did in exactly three minutes in Mathematica

And this took 10 seconds:
Plot3D[Sin[x y], {x, -2, 2}, {y, -2, 2}]


Take a look at this.
Because someone asked about labelling:
Plot[{x, -x^2 + 5}, 
{x, 0, 3}, 
Epilog -> Text[Style["f(x) = g(x)", 16, Italic], {1.8, 2.2}]]


