I took one look at that diagram and thought, "Absolutely! Use TikZ.". I then thought of trying to typeset that diagram and seeing how long it took me - I would estimate about a 1/4hr to get something fairly close and then probably another 10 minutes to tweak things to how I wanted them (assuming that I didn't encounter either any hidden difficulties or any interesting behaviour - which would send me off on a tangent while I found out about it).
But then I decided that that wouldn't be helpful. In my "scratch" directory where I try out answers for this site, I have 502 tex files of which 306 match usepackage{tikz}
. So I'm a little TikZ-obsessed! And so a straightforward diagram like that really shouldn't take me much time, otherwise I've been wasting a heck of a lot of time learning TikZ.
Rather, I'm going to explain why I use TikZ instead of a graphical package such as Inkscape. I think my reasoning is actually why I use a programming system rather than a graphical system, so would equally apply to PSTricks or other such.
Precision I'm a bit fanatical about getting stuff in the actual right place, not just what looks okay. Your diagram would look not so polished if the Map
s didn't line up exactly - it might not be obvious why, but looking at it one would have a feeling of it not being quite right. It's easier to program precision than drag-and-drop it.
Repetition There's a lot that's the same in the diagram. Lots of pieces have the same style, the same layout. Again, it's easier to program these than drag-and-drop them. I expect that programs like Inkscape have lots of shortcuts for "apply the same style to all of these", but I'd also imagine that it's easy to miss out one aspect, or include one aspect too many.
Variation I'm never happy with how things turn out the first time. I frequently want to change little things until I'm happy with them. Being able to change just one thing and have a whole lot depend on that one change makes this much easier. So defining a style and changing that, or basing a sub-diagram at a particular coordinate, makes it easier to vary things until I'm happy.
Repetition I do a lot of diagrams, but not so many that I'm a graphical designer. Every time that I do a new diagram there's a certain amount of "I've done something like this before, how did I do it?" with subsequent cut-and-pasting. When I use a graphical system then all of the "How did I do it?" information is lost. I can cut-and-paste actual objects, but it's rarely the objects that I want to copy - it's the "how did I get that particular effect" that I want to copy. When programming a diagram, all of this is laid out in an easily copy-able form.
For me, this last one is the reason TikZ fits so well into my workflow. It's the same with TeX itself. Every so often I find myself sitting in front of OpenOffice (or worse) and thinking, "How did I get the footer to stay on the bottom last time? Yet again it's floating in the middle of the page!". Then I have to remember the exact sequence of menus and options to do it. With TeX then I look back at the old document where this happened, find the \def\footerlocation{bottom}
, and copy it over. That is the real time-saver for me.
In conclusion, if you've only one or a small number of diagrams to do then the time saved/time spent lines may not cross for you. But if it's something that you'll do a lot, consider time learning to program your diagrams time well spent.
As this question is proving so popular, I thought I'd add a little more. Specifically, examples. A little while ago, I uploaded all the pictures I'd generated using TikZ for this site to Picassa (at least, I think they all use TikZ. Certainly most of them do.). You can see them at this link: https://plus.google.com/photos/110765980098077923527/albums/5659314316046158689?banner=pwa. A particular picture, which isn't there, which I think demonstrates where something like TikZ is essential is the following:

Other examples abound in The Enchanted Forest.
For this kind of drawings I would suggest you to use pgfplots
instead; the inverse trigonometric functions pose a challenge to the PGF math engine, so you can use gnuplot
. Here's a big part of your image; the missing elements are easy to fill in:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{subfigure}
\newcommand{\tg}{\mathop{\mathrm{tg}}}
\newcommand{\cotg}{\mathop{\mathrm{cotg}}}
\newcommand{\arctg}{\mathop{\mathrm{arctg}}}
\newcommand{\arccotg}{\mathop{\mathrm{arccotg}}}
\pgfplotsset{
compat=1.8,
every axis plot/.append style={
no marks,
blue,
thick
},
every axis/.style={
enlargelimits=false,
axis lines=middle,
xticklabels=empty,
yticklabels=empty,
xtick=\empty,
ytick=\empty,
width=4.75cm,
xlabel style={at={(rel axis cs:0.94,0.48)},anchor=north west},
ylabel style={at={(rel axis cs:0.5,1.01)},anchor=east},
xlabel=$\scriptstyle x$,
ylabel=$\scriptstyle y$
},
legend style={
draw=none,
font=\footnotesize\color{blue}
},
every axis legend/.append style={
at={(0.55,1.15)},
anchor=north west
},
empty legend
}
\begin{document}
\begin{figure}
\centering
\subfigure
{%
\begin{tikzpicture}
\begin{axis}[ymin=-1.5,ymax=1.5]
\addplot+[domain=-1.5:1.5] {1};
\addlegendentry{$f(x)=c$}
\end{axis}
\end{tikzpicture}
}
\subfigure%
{
\begin{tikzpicture}
\begin{axis}
\addplot+[domain=-1.5:1.5] {x};
\addlegendentry{$f(x)=x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[ymin=-1.5,ymax=1.5]
\addplot+[domain=-3:3,samples=101] {x^(2)};
\addlegendentry{$f(x)=x^2$}
\end{axis}
\end{tikzpicture}
}\\
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[ymin=-1.5,ymax=1.5]
\addplot+[domain=-1.5:1.5] {x^(3)};
\addlegendentry{$f(x)=x^3$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}
\addplot+[domain=-1.5:1.5,unbounded coords=jump,samples=101] {x^(-1)};
\addlegendentry{$f(x)=x^{-1}$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-1.5,ymin=-1.5,ymax=1.5]
\addplot+[domain=0.0001:1.5,unbounded coords=jump,samples=301] {x^(0.5)};
\addlegendentry{$f(x)=\sqrt{x}$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-1.5,xmax=1.5,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[samples=101] {e^(x)};
\addlegendentry{$f(x)=e^{x}$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-1.5,xmax=1.5,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[domain=-1.5:1.5,unbounded coords=jump,samples=301] {ln(x)};
\addlegendentry{$f(x)=\ln{x}$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-6.283,xmax=6.28,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[] gnuplot [domain=-6.283:6.283,samples=105] {sin(x)};
\addlegendentry{$f(x)=\sin x$}
\end{axis}
\end{tikzpicture}
}\\
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-6.283,xmax=6.28,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[] gnuplot [domain=-6.283:6.283,samples=105] {cos(x)};
\addlegendentry{$f(x)=\cos x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-3.5,xmax=3.5,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[] gnuplot [domain=-1.5:1.5,unbounded coords=jump,samples=105] {tan(x)};
\addplot+[blue] gnuplot [domain=-3.5:-1.8,unbounded coords=jump,samples=105] {tan(x)};
\addplot+[blue] gnuplot [domain=1.8:3.5,unbounded coords=jump,samples=105] {tan(x)};
\addlegendentry{$f(x)=\tg x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-3,xmax=3,ymin=-1.5,ymax=1.5,enlargelimits=true]
\addplot+[domain=-3:-0.1,unbounded coords=jump,samples=101] {cot(deg(x))};
\addplot+[blue,domain=0.1:3,unbounded coords=jump,samples=101] {cot(deg(x))};
\addlegendentry{$f(x)=\cotg x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1,enlargelimits=true]
\addplot+[] gnuplot [domain=-1:1,unbounded coords=jump,samples=120] {asin(x)};
\addlegendentry{$f(x)=\arcsin x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-1,xmax=1,ymin=-3,ymax=3,enlargelimits=true]
\addplot+[] gnuplot [domain=-1:1,unbounded coords=jump,samples=120] {acos(x)};
\addlegendentry{$f(x)=\arccos x$}
\end{axis}
\end{tikzpicture}
}
%
\subfigure
{
\begin{tikzpicture}
\begin{axis}[xmin=-8,xmax=8,ymin=-1.2,ymax=1.2,enlargelimits=true]
\addplot+[] gnuplot [domain=-8:8,unbounded coords=jump,samples=120] {atan(x)};
\addlegendentry{$f(x)=\arctg x$}
\end{axis}
\end{tikzpicture}
}
%
\end{figure}
\end{document}

Since gnuplot
is being used, you need to have it installed in your system, and the document has to be processed using
pdflatex --shell-escape name.tex
in Lynux systems or something like
pdflatex enable-write18 name.tex
in Windows.
By the way, subfigure
is an obsolete package; you should use subfig
or subcaption
instead.
Best Answer
PGFplots would be suited quite well for this. It takes a bit of time to get hang of the PGF/TikZ and the PGFplots syntax, but once you've found out how to do something, it's really easy to wrap it in a
style
to apply it to other problems. Here's the example you linked to, drawn using PGFplots:using this code:
And the example from the next page
can be generated using
These code snippets are a bit misleading, since they use a lot of custom styles that you have to write yourself. However, they show how easy it is to create similar plots once you have the styles.
Here's the complete code for the examples: