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.
2026-03-26 11:24:22.1774524262
On
Graphing Software for Teaching
645 Views Asked by Bumbble Comm https://math.techqa.club/user/bumbble-comm/detail At
2
There are 2 best solutions below
0
On
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);

Here's what I did in exactly three minutes in Mathematica
And this took 10 seconds:
Take a look at this.
Because someone asked about labelling: