<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Tutorial slides on Python.
%
% Author: FOSSEE
% Copyright (c) 2009-2016, FOSSEE, IIT Bombay
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[14pt,compress]{beamer}

% Modified from: generic-ornate-15min-45min.de.tex
\mode&lt;presentation&gt;
{
  \usetheme{Warsaw}
  \useoutertheme{infolines}
  \setbeamercovered{transparent}
}

\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
%\usepackage{times}
\usepackage[T1]{fontenc}

% Taken from Fernando's slides.
\usepackage{ae,aecompl}
\usepackage{mathpazo,courier,euler}
\usepackage[scaled=.95]{helvet}

\definecolor{darkgreen}{rgb}{0,0.5,0}

\usepackage{listings}
\lstset{language=Python,
    basicstyle=\ttfamily\bfseries,
    commentstyle=\color{red}\itshape,
  stringstyle=\color{darkgreen},
  showstringspaces=false,
  keywordstyle=\color{blue}\bfseries}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Macros
\setbeamercolor{emphbar}{bg=blue!20, fg=black}
\newcommand{\emphbar}[1]
{\begin{beamercolorbox}[rounded=true]{emphbar}
      {#1}
 \end{beamercolorbox}
}
\newcounter{time}
\setcounter{time}{0}
\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}

\newcommand{\typ}[1]{\lstinline{#1}}

\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}}  }

%%% This is from Fernando's setup.
% \usepackage{color}
% \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
% % Use and configure listings package for nicely formatted code
% \usepackage{listings}
% \lstset{
%    language=Python,
%    basicstyle=\small\ttfamily,
%    commentstyle=\ttfamily\color{blue},
%    stringstyle=\ttfamily\color{orange},
%    showstringspaces=false,
%    breaklines=true,
%    postbreak = \space\dots
% }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Title page
\title[Interactive Plotting]{Introductory Scientific Computing with
Python}
\subtitle{Introduction, IPython and Plotting}

\author[FOSSEE] {FOSSEE}

\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
\date[] {Mumbai, India
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
%\logo{\pgfuseimage{iitmlogo}}


%% Delete this, if you do not want the table of contents to pop up at
%% the beginning of each subsection:
\AtBeginSubsection[]
{
  \begin{frame}&lt;beamer&gt;
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

\AtBeginSection[]
{
  \begin{frame}&lt;beamer&gt;
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:
%\beamerdefaultoverlayspecification{&lt;+-&gt;}

%%\includeonlyframes{current,current1,current2,current3,current4,current5,current6}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DOCUMENT STARTS
\begin{document}

\begin{frame}
  \maketitle
\end{frame}

%% \begin{frame}
%%   \frametitle{Outline}
%%   \tableofcontents
%%   % You might wish to add the option [pausesections]
%% \end{frame}

\begin{frame}
    \frametitle{Acknowledgement}
    \Large
    \begin{center}
        \alert{FOSSEE group (\url{fossee.in})} \\
        based at\\
        \alert{IIT Bombay}\\
        and funded by\\
        The National Mission on Education through ICT, \\
        \alert{Ministry of HRD, India}
    \end{center}
\end{frame}

\section{Checklist}
\begin{frame}
\frametitle{Checklist}
  \begin{enumerate}
    \item Editor - we recommend \alert{Canopy}
    \item IPython
    \item Data files:
      \begin{itemize}
      \item \typ{pendulum.txt}
      \item \typ{data.csv}
      \end{itemize}
    \item Images
      \begin{itemize}
      \item \typ{lena.png}
      \end{itemize}
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{About the Tutorial}
  \begin{block}{Intended Audience}
  \begin{itemize}
       \item Engg., Mathematics and Science researchers with a
           reasonable programming background.
  \end{itemize}
  \end{block}

  \begin{block}{Goal: Successful participants will be able to}
    \begin{itemize}
      \item Start using Python as plotting, computational tool.
      \item Use the basic libraries and tools for scientific computing
          with Python.
    \end{itemize}
  \end{block}
\end{frame}

%% \begin{frame}[fragile]
%% \frametitle{The Python interpreter \ldots}
%% \begin{block}{}
%% \begin{lstlisting}
%%   $ python
%% \end{lstlisting} %$
%% \end{block}
%% \begin{lstlisting}
%%   &gt;&gt;&gt; print "Hello, World!"
%%   Hello, World!
%% \end{lstlisting}
%% Exiting
%% \begin{lstlisting}
%%   &gt;&gt;&gt; ^D(Ctrl-D)
%%   $
%% \end{lstlisting} %$
%% \end{frame}

\section{Starting up IPython}
\begin{frame}[fragile]
\frametitle{Starting up \ldots}
\begin{block}{Start a terminal}
  \begin{itemize}
    \item Canopy command prompt (Tools menu)
\end{itemize}
\end{block}

\begin{block}{On Terminal}
\begin{lstlisting}
  $ ipython --pylab
\end{lstlisting} %$
\end{block}
\end{frame}

% \section{Starting up IPython}
% \begin{frame}[fragile]
% \frametitle{Starting up \ldots}
% \begin{block}{Terminal Jupyter}
% \begin{lstlisting}
%   $ jupyter console

%   In [1]: %pylab
% \end{lstlisting} %$
% \end{block}
% \end{frame}


\begin{frame}[fragile]
\frametitle{Running IPython}
\begin{lstlisting}
  In []: print("Hello, World!")
  Hello, World!
\end{lstlisting}

Exiting on the \textbf{terminal}
\begin{lstlisting}
  In []: ^D(Ctrl-D)
  Do you really want to exit([y]/n)? y
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{IPython? }
  \begin{itemize}
  \item An enhanced Python interpreter
  \end{itemize}
\end{frame}

% \begin{frame}[fragile]
%   \frametitle{Pressed Ctrl-D on Canopy? }
%   \begin{itemize}
%   \item Pressed \verb+Ctrl-D+ inside Canopy?
%   \item You suddenly lost the Python prompt?
%   \item Go to \verb+View-&gt;Python+
%   \end{itemize}
% \end{frame}


\section{Breaking out of loops}
\begin{frame}[fragile]
\frametitle{Breaking out of Loops}
Breaking out of loops
\begin{lstlisting}
  In []: while True:
    ...:     print("Hello, World!")
    ...:
  Hello, World!
  Hello, World!^C(Ctrl-C)
  ------------------------------------
  KeyboardInterrupt
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Exercise}

  \begin{itemize}
  \item Exit the IPython interpreter
  \item Close the terminal
  \item Restart the terminal (Canopy tools menu)
  \item Restart IPython using:
  \end{itemize}
\begin{lstlisting}
  $ ipython --pylab
\end{lstlisting} %$
  \inctime{10}
\end{frame}

\section{Plotting}

\begin{frame}
  \frametitle{Important instructions}
  \begin{itemize}
  \item For the first session, please do not experiment
  \item Follow along and type everything!
  \item Case matters
  \item Every character you type matters!
  \end{itemize}
\end{frame}

\subsection{Drawing plots}
\begin{frame}[fragile]
\frametitle{First Plot}
\begin{columns}
    \column{0.25\textwidth}
    \hspace*{-0.25in}
  \includegraphics[height=2in, interpolate=true]{data/firstplot}
    \column{0.8\textwidth}
    \begin{block}{}
    \begin{small}
\begin{lstlisting}
In []: x = linspace(0, 2*pi, 50)
In []: plot(x, sin(x))
\end{lstlisting}
    \end{small}
    \end{block}
\end{columns}
\end{frame}

\begin{frame}[fragile]
\frametitle{Walkthrough}
\begin{block}{\typ{x = linspace(start, stop, num)} }
returns \typ{num} evenly spaced points, in the interval [\typ{start}, \typ{stop}].
\end{block}
\vspace*{.35in}
\begin{block}{}
  \small
\begin{lstlisting}
In []: x[0]
Out[]: 0.0

In []: x[49]
Out[]: 6.2831853071795862
\end{lstlisting}
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{Walkthrough \ldots}
\begin{block}{\typ{plot(x, y)}}
plots \typ{x} and \typ{y} using default line style and color
\end{block}
\inctime{5}
\end{frame}

\begin{frame}
  \frametitle{Important instructions}
  \begin{itemize}
  \item Please do not close the plot windows or IPython
  \item For the first session, please do not experiment
  \item Follow along and type everything!
  \item Case matters
  \item Every character you type matters!
  \end{itemize}
\end{frame}

\subsection{Decoration}
\begin{frame}[fragile]
\frametitle{Adding Labels}
\begin{columns}
  \column{0.25\textwidth}
  \hspace*{-0.45in}
  \includegraphics[height=2in, interpolate=true]{data/label}
  \hspace*{0.5in}
  \column{0.55\textwidth}
  \begin{block}{}
  \small
  \begin{lstlisting}
In []: xlabel('x')

In []: ylabel('sin(x)')
  \end{lstlisting}
  \small
%  \end{lstlisting}
%\typ{xlabel(s)} sets the label of the \typ{x}-axis to \typ{s}

%  \begin{lstlisting}
  \end{block}
%\typ{ylabel(s)} sets the label of the \typ{y}-axis to \typ{s}
\end{columns}
\end{frame}

\begin{frame}[fragile]
\frametitle{Another example}
  \begin{lstlisting}
In []: clf()
  \end{lstlisting}
\emphbar{Clears the plot area.}
  \begin{lstlisting}
In []: y = linspace(0, 2*pi, 50)
In []: plot(y, sin(2*y))
In []: xlabel('y')
In []: ylabel('sin(2y)')
  \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
\frametitle{IPython tips}

\begin{itemize}
\item Use \typ{TAB} to complete command
\item Try:
\begin{lstlisting}
In []: pl&lt;TAB&gt;
\end{lstlisting}
\end{itemize}
\vspace*{0.5in}

{\Large \structure{History}}
\begin{itemize}
\item Up arrow and down arrow

\item Left / right to move and edit

\item Type some text and press up arrow:
\begin{lstlisting}
In []: pl&lt;Up Arrow&gt;
\end{lstlisting}

\end{itemize}

\end{frame}

\begin{frame}[fragile]
  \frametitle{Advanced IPython tips \ldots}
  \begin{itemize}
\item Search: \typ{Ctrl-r} and start typing

\item \typ{Ctrl-a}: go to start of line

\item \typ{Ctrl-e}: go to end of line

\item \typ{Ctrl-k}: kill to end of line
  \end{itemize}
\end{frame}


\subsection{More decoration}
\begin{frame}[fragile]
\frametitle{Title and Legends}
\vspace*{-0.15in}
%  \begin{block}{}
%  \small
\begin{lstlisting}
In []: title('Sinusoids')
In []: legend(['sin(2y)'])
\end{lstlisting}
%  \small
%  \end{block}
  \vspace*{-0.1in}
  \begin{center}
  \includegraphics[height=2in, interpolate=true]{data/legend}
  \end{center}
\end{frame}

\begin{frame}[fragile]
\frametitle{Legend Placement}
\begin{block}{}
    \small
\begin{lstlisting}
In []: legend(['sin(2y)'], loc='center')
\end{lstlisting}
\end{block}

\begin{columns}
    \column{0.6\textwidth}
 \includegraphics[height=2in, interpolate=true]{data/position}
\column{0.45\textwidth}
\vspace{-0.2in}
\begin{lstlisting}
'best'
'right'
'left'
'center'
\end{lstlisting}
\end{columns}
\inctime{15}
\end{frame}

\begin{frame}
  \frametitle{Important instructions}
  \begin{itemize}
  \item Please do not close the plot windows or IPython
  \item For the first session, please do not experiment
  \item Follow along and type everything!
  \item Case matters
  \item Every character you type matters!
  \end{itemize}
\end{frame}

%% \begin{frame}[fragile]
%%   \frametitle{For arbitrary location}
%% \vspace*{-0.1in}
%% \begin{lstlisting}
%% In []: legend(['sin(2y)'], loc=(.8,.1))
%% \end{lstlisting}
%% \emphbar{Specify south-east corner position}
%% %\vspace*{-0.2in}
%% \begin{center}
%%   \includegraphics[height=2in, interpolate=true]{data/loc}
%% \end{center}
%% %\inctime{10}
%% \end{frame}

\begin{frame}[fragile]
\frametitle{Showing it better}
\vspace{-0.15in}
\begin{lstlisting}
In []: plot(y, cos(y), 'r')
# See a red plot!

In []: clf()
In []: plot(y, sin(y), 'g', linewidth=2)
\end{lstlisting}
\vspace*{-0.2in}
\begin{center}
  \includegraphics[height=2.2in, interpolate=true]{data/green}
\end{center}
%\inctime{10}
\end{frame}

\begin{frame}[fragile]
\frametitle{Annotating}
\vspace*{-0.1in}
\begin{lstlisting}
In[]: annotate('local max', xy=(1.5, 1))
\end{lstlisting}
\vspace*{-0.2in}
\begin{center}
  \includegraphics[height=3in, interpolate=true]{data/annotate}
\end{center}
\end{frame}

\begin{frame}[fragile]
\frametitle{Saving \&amp; Closing}
\begin{lstlisting}
In []: savefig('sin.png')

In []: close()
\end{lstlisting}
Some supported formats:
\begin{itemize}
\item png
\item pdf
\item svg
\end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Recap}
  \begin{itemize}
  \item \typ{linspace(start, end, num)}
  \item \typ{plot(x, y)}
  \item \typ{clf()}
  \item \typ{xlabel, ylabel}
  \item \typ{title, legend, annotate}
  \item \typ{savefig}
  \item \typ{close}
  \end{itemize}
  \inctime{10}
\end{frame}

\section{Multiple plots}
\begin{frame}[fragile]
  \frametitle{Overlaid Plots}
\begin{lstlisting}
In []: y = linspace(0, 2*pi, 50)
\end{lstlisting}

\begin{lstlisting}
In []: clf()
In []: plot(y, sin(y))
In []: plot(y, cos(y))
In []: xlabel('y')
In []: ylabel('f(y)')
In []: legend(['sin(y)', 'cos(y)'])
# Note how we made two legends
\end{lstlisting}


\emphbar{By default plots would be overlaid!}
\end{frame}

\begin{frame}[fragile]
\frametitle{Plotting separate figures}
\begin{lstlisting}
In []: clf()
In []: figure(1)
In []: plot(y, sin(y))
In []: figure(2)
In []: plot(y, cos(y))
In []: savefig('cosine.png')
In []: figure(1)
In []: title('sin(y)')
In []: savefig('sine.png')
In []: close()
In []: close()
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
\frametitle{Get Axes lengths}
\emphbar{Getting axes lengths}
  \begin{lstlisting}
In []: xmin, xmax = xlim()
In []: ymin, ymax = ylim()
In []: print(xmin, xmax)
\end{lstlisting}
\pause
\emphbar{Set the axes limits}
  \begin{lstlisting}
In []: xlim(xmin, 2*pi )
In []: ylim(ymin-0.2, ymax+0.2)
  \end{lstlisting}
\end{frame}

\begin{frame}[plain,fragile]
  \frametitle{Axes lengths}
  \vspace*{-0.2in}
  \begin{center}
    \includegraphics[height=3.25in, interpolate=true]{data/limits}
  \end{center}
\end{frame}

\begin{frame}[fragile]
\frametitle{IPython tip: documentation}

\begin{itemize}

    \item Try:
\begin{lstlisting}
In []: plot?
\end{lstlisting}
      \vspace*{0.2in}
        to get more information on \typ{plot}

      \item Use arrow keys to scroll docs
      \item Note: exit help pager with ``q''
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{IPython tip: source}
\begin{itemize}
    \item Try:
\begin{lstlisting}
In []: plot??
\end{lstlisting}
    to see the source code for \typ{plot}

\end{itemize}
\inctime{10}
\end{frame}


\begin{frame}[plain,fragile]
\frametitle{Review Problem}
\begin{enumerate}
\item Plot $x, -x, \sin(x), x \sin(x)$ in range $-5\pi$ to $5\pi$
\item Add a legend
\item Annotate the origin
\item Set axes limits to the range of x
\end{enumerate}
\vspace*{-0.15in}
\begin{center}
  \includegraphics[height=2.6in, interpolate=true]{data/four_plot}
\end{center}
\end{frame}

\end{document}

%% Questions for Quiz %%
%% ------------------ %%

\begin{frame}[fragile]
\frametitle{\incqno }
Draw (roughly) the plot obtained by the following:
\begin{lstlisting}
In []: x = linspace(0, pi, 3)
In []: plot(x, sin(x))
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
\frametitle{\incqno }
Describe the plot produced by the following:
\begin{lstlisting}
In []: x = linspace(0, 2*pi, 50)
In []: plot(x, cos(x), 'go')
\end{lstlisting}
\end{frame}

\begin{frame}
\frametitle{\incqno }
How will you plot the previous graph with line width set to 3?  How will
you set the $x$ and $y$ labels of the plot?
\end{frame}

\begin{frame}
\frametitle{\incqno }
How will you set the x and y axis limits so that the region of interest
is in the rectangle $(0, -1.5)$ (left bottom coordinate) and $(2\pi,
1.5)$ (right top coordinate)?
\end{frame}

\begin{frame}
\frametitle{\incqno }
What ipython magic command do you use to obtain the lines of code you have already typed in the interpreter? What command do you use to save them?
\end{frame}

\begin{frame}[fragile]
\frametitle{\incqno }
The following code snippet has an error/bug:
\begin{lstlisting}
In []: y = linspace(0, 2*pi, 50)
In []: plot(y, sin(y))
In []: clf()
In []: plot(y, cos(y))
In []: legend(['sin(y)', 'cos(y)'])
\end{lstlisting}
What is the error? How do you fix it?
\end{frame}
</pre></body></html>