\documentclass[12pt]{article}


\title{Interactive Plotting}
\author{FOSSEE}
\usepackage{listings}
\lstset{language=Python,
    basicstyle=\ttfamily,
commentstyle=\itshape\bfseries,
showstringspaces=false,
}
\newcommand{\typ}[1]{\lstinline{#1}}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}
\usepackage{mathpazo,courier,euler}
\usepackage[scaled=.95]{helvet}

\begin{document}
\date{}
\vspace{-1in}
\begin{center}
\LARGE{Interactive Plotting}\\
\large{FOSSEE}
\end{center}
\section{Starting up...}

\begin{lstlisting}
  $ ipython -pylab  
\end{lstlisting}
Exiting 
\begin{lstlisting}     
In [2]: (Ctrl-D)^D
Do you really want to exit ([y]/n)? y
\end{lstlisting} %$

\section{Plotting}
\subsection{linspace}
\typ{In []: x = linspace(start, stop, num)}\\
\typ{linspace} returns array of length \typ{num}, for which \typ{x[0] = start} and \typ{x[num-1] = stop} \\
\emph{Please note indices of array starts from zero(0)}

\subsection{plot}
\typ{In []: plot(X, Y)}\\
For given arrays of equal length(above case X and Y), \typ{plot} plots the corresponding *x* and *y* pairs taken from X and Y.

\subsection{Colors of plots}
\typ{In []: plot(y, sin(y), 'g')}\\
Plots graph with green color. Other options available are:
\begin{lstlisting}
  'r' ---> Red
  'b' ---> Blue
  'r' ---> Red 
  'c' ---> Cyan 
  'm' ---> Magenta
  'y' ---> Yellow
  'k' ---> Black 
  'w' ---> White
\end{lstlisting}
One can set the width of the plotline using optional argument \typ{linewidth}. For example:\\
\typ{In []: plot(x, cos(x), 'r', linewidth=2)}\\
Plots the line with linewidth = 2
\subsection{label and title}
\typ{In []: xlabel('Length') #sets *x* axis label to Length}\\ 
\typ{In []: ylabel('Time') #sets *y* axis label to Time.}\\
\typ{In []: title('Sinusoids') #sets title of plot}\\
\\
\textbf{Additionally}\\
Pylab accepts TeX equation expressions in any text expression. To get something like:\\
$\sigma_i=15$ \\
on title of figure use: 
\begin{lstlisting}
In []: title('$\sigma_i=15$')
\end{lstlisting}  
Same way one can have TeX expression on xlabel, ylabel etc.

\subsection{legends}
\typ{In []: legend('sin(x)',loc=center)} \\
Places a legend on the current plot at location *loc*.\\
Apart from \typ{center}, some other \typ{loc} which can be specified are:
\begin{lstlisting}
'best'
'right'
'upper right'
'upper left'      
'lower left'      
'lower right'     
'center left'     
'center right'    
'lower center'    
'upper center'    
\end{lstlisting}
\newpage
One can also mention explicit co-ordinates for placement of legend. 
\begin{lstlisting}
In []: legend(['sin(2y)'], loc=(.8,.1)) 
\end{lstlisting}
\typ{loc = 0, 1} (top left position of graph)\\
\typ{loc = 0.5, 0.5} (center of graph).

\subsection{Annotate}
\typ{In []: annotate('local max', xy=(1.5, 1))}\\
Annotates current plot with text, 'local max', at position specified to \typ{xy}.

\subsection{Saving figures}
\typ{In []: savefig('sinusoids.png')}\\
Saves the current figure with file name 'sinusoids.png' in current working directory. One can save figure in any of these formats: png, pdf, ps, eps and svg.

\subsection{Miscellaneous}
\typ{In []: clf() #Clears the current plot area}\\
\typ{In []: close() #Closes the figure}
\section{Saving and running scripts}
\begin{itemize}
  \item \typ{\%hist}\\
  It returns the logs of all commands(including mistakes) used in IPython interpreter.
  \item \typ{\%hist -n}\\
It disables the line number representation of logs.
  \item \typ{\%save four\_plot.py 16 18-27}\\
For creating a script named four\_plot which includes line 16 and line 18 to 27 of logs.
  \item \typ{\%run -i four\_plot.py}\\
Running the python script inside IPython interpreter.
\end{itemize}

\section{Example}
  \begin{lstlisting}
In []: x = linspace(0, 2*pi, 50)
In []: plot(x, sin(x), 'g')
In []: plot(x, cos(x), 'r', linewidth=2)
In []: xlabel('x')
In []: title('Sinusoidal Waves')
In []: legend(['sin(x)', 'cos(x)'])
In []: annotate('origin', xy=(0, 0))
In []: xmin, xman = xlim()  # returns current X axis limits.
In []: ymin, ymax = ylim()
In []: xlim(0, 2 * pi) # sets the X axis limits to passed values
In []: ylim(ymin - 0.2, ymax + 0.2) 

In []: savefig('sin.png')   # Save figure
In []: close()              
  \end{lstlisting}

\section{References}
\begin{itemize}
  \item For documentation on IPython refer: \\ http://ipython.scipy.org/moin/Documentation
  \item Plotting(matplotlib) related documentation are available at:\\ http://matplotlib.sourceforge.net/contents.html
  \item Explore examples and plots based on matplotlib at \\ http://matplotlib.sourceforge.net/examples/index.html
\end{itemize}
\end{document}

