# Plotting a reciprocal of a sine function in tikz + pgfplots

This is my code at the moment:

% Rest of document omitted brevity...
\subsection*{f(x) = cosec(x)}
\begin{tikzpicture}
\begin{axis}[every axis plot post/.append style={
mark=none,
domain=0:360,
samples=500,
smooth}, % All plots: 50 samples, smooth, no marks
axis x line=middle,
axis y line=center,
xmin=0,
xmax=360,
ymin=-1,
ymax=1,
enlargelimits=upper] % extend the axes a bit to the right and top
\end{axis}
\end{tikzpicture}
% Rest of document omitted brevity...


This looks right to me, however, when I try and compile, I get: C:/Users/Todd/Dropbox/Homework/Notes/A-level_Maths/Core 3/Graphs/Graphs.tex:111: Dimension too large. [\end{axis}]

When I change \addplot {1 / sin(x)}; to \addplot {sin(x)}; the document compiles without any issues. What am I doing wrong?

• You are dividing one by zero. – percusse Jan 20 '13 at 19:36
• Ahhh yes of course! – Todd Davies Jan 20 '13 at 19:37

Some remarks about what are you trying to achieve:

• Consider using degrees as an argument for trigonometric functions via deg(x)-pgfplots function.
• After using deg(x) the domain and range of x-axes should be rescaled.
• Don't forget the \pgfplotsset{compat=1.7} in document preamle. =)
• Use cosec(x) function instead of 1 / sin(x).

Finally we've got (included all, wrapped in standalone):

\documentclass{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[every axis plot post/.append style={
mark=none,
domain=0:10,
samples=500,
smooth}, % All plots: 50 samples, smooth, no marks
axis x line=middle,
axis y line=center,
xmin=0,
xmax=10,
ymin=-10,
ymax=10,
enlargelimits=upper] % extend the axes a bit to the right and top
\end{axis}
\end{tikzpicture}
\end{document}


And the result: • Nice answer, It would appear that using deg(x) fixes the problem – Todd Davies Jan 20 '13 at 19:46

Problem is on x=k*pi, 1/sin(x) is undefined (or as your error suggests "too large" because the package plots it numerically) . You can solve this problem by using restrict y to domain:

\begin{tikzpicture}
\begin{axis}[every axis plot post/.append style={
restrict y to domain=-10:10,
mark=none,
domain=-360:360,
samples=500,
smooth}, % All plots: 50 samples, smooth, no marks
axis x line=middle,
axis y line=center,
xmin=-360,
xmax=360,
ymin=-10,
ymax=10,
enlargelimits=upper] % extend the axes a bit to the right and top