# Problem with atan with pgfplots

I'm trying to plot simple Bode plots using pgfplots. After much research, I discarded the package Bodegraph due to its bad documentation and a lot of troubles with the gnuplot. So, I'm using an axis environment with the logarithmic x-axis activated. The next code is sample example of a tikzpicture that shows the problem.

\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height = 3cm,
xmode = log,
axis x line*=box,
axis y line*=box,
xmin=1e-2, xmax=1e2,% range for the x axis
ymin=-100, ymax = 100,
scale only axis ,
ytick distance=40,
xmajorgrids = true,
ymajorgrids = true,
title = Fase,
ylabel = $\phi$,
xlabel = $\omega$
]
blue,
ultra thick,
mark=none,
domain=1e-2:1e2,
samples=400,
trig format plots = deg]
{atan((2*0.1*(x/2))/(1-(x/2)^2))};
\end{axis}
\end{tikzpicture}


The problem is that I get the following wrong plot:

What I'm expecting to get is something like:

Please, notice that I'm using the trig format plots=true to set degrees for the trigonometric functions. Can anybody help me out? This is just the phase angle plot of a second order system.

• Use the restrict y to domain=[min,max] keyword. You need to have at least one point outside the clip region to interpolate correctly. See tex.stackexchange.com/questions/324646/… – John Kormylo Jun 27 '17 at 19:29
• Why is that wrong/unexpected? You divide by 1-x/2 in argument to atan, so near x=2 you're approaching the limit of infinity, and arctan(+/- inf) is +/-90 degrees. (I have no idea what a phase angle plot of a second order system is.) – Torbjørn T. Jun 27 '17 at 20:24
• Use atan2 not atan – percusse Jun 27 '17 at 23:30
• Yes, I'm trying to use atan2 but I get several errors while using atan2 with pgfplots. – Aleo Jun 28 '17 at 7:53
• It seems like atan2 is undefined so a default value 1 is substituted. It raise errors because 1 is not a floating number. – Symbol 1 Jul 2 '17 at 14:19

The plot you show is correct I think, in the sense that it correctly displays the formula you entered. As mentioned in a comment, you divide by 1-x/2 in the argument to atan, and the limit of atan(x) as x approaches infinity is 90 degrees.

percusse mentions in a another comment that you want to use atan2 instead. atan2 takes two values, atan2(y,x). I have no idea exactly what kind of expression you're supposed to use, but as an example (atan2(1,x)-45)*2 gives you something similar to what you expect, though with a less steep curve in the middle part. I'm not familiar with these things though, so I cannot help you find a more appropriate formula.

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height = 3cm,
xmode = log,
axis x line*=box,
axis y line*=box,
xmin=1e-2, xmax=1e2,% range for the x axis
ymin=-100, ymax = 100,
scale only axis ,
ytick distance=40,
xmajorgrids = true,
ymajorgrids = true,
title = Fase,
ylabel = $\phi$,
xlabel = $\omega$
]