diff -r b77b9fce62d6 -r 571226041e79 presentations/basic-plot.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presentations/basic-plot.tex Tue Apr 06 17:02:41 2010 +0530 @@ -0,0 +1,771 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Tutorial slides on Python. +% +% Author: FOSSEE +% Copyright (c) 2009, FOSSEE, IIT Bombay +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[14pt,compress]{beamer} +%\documentclass[draft]{beamer} +%\documentclass[compress,handout]{beamer} +%\usepackage{pgfpages} +%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm] + +% Modified from: generic-ornate-15min-45min.de.tex +\mode +{ + \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[Basic Plotting]{Python for Scientific Computing : Basic Plotting} + +\author[FOSSEE] {FOSSEE} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date{} +%% \date[] {7 November, 2009\\Day 1, Session 1} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\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} +%% \frametitle{Outline} +%% \tableofcontents[currentsection,currentsubsection] +%% \end{frame} +%% } + +%% \AtBeginSection[] +%% { +%% \begin{frame} +%% \frametitle{Outline} +%% \tableofcontents[currentsection,currentsubsection] +%% \end{frame} +%% } + +% If you wish to uncover everything in a step-wise fashion, uncomment +% the following command: +%\beamerdefaultoverlayspecification{<+->} + +%%\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{Workshop Schedule: Day 1} +%% \begin{description} +%% \item[Session 1] Sat 09:00--10:00 +%% \item[Session 2] Sat 10:05--11:05 +%% \item[Session 3] Sat 11:20--12:20 +%% \item[Session 4] Sat 12:25--13:25 +%% \item[Quiz 1] Sat 14:25--14:40 +%% \item[Session 5] Sat 14:40--15:25 +%% \item[Session 6] Sat 15:40--16:40 +%% \item[Quiz 2] Sat 16:45--17:00 +%% \end{description} +%% \end{frame} + +%% \begin{frame} +%% \frametitle{Workshop Schedule: Day 2} +%% \begin{description} +%% \item[Session 1] Sun 09:00--10:00 +%% \item[Session 2] Sun 10:05--11:05 +%% \item[Session 3] Sun 11:20--12:20 +%% \item[Session 4] Sun 12:25--13:25 +%% \item[Quiz 1] Sun 14:25--14:40 +%% \item[Session 5] Sun 14:40--15:25 +%% \item[Session 6] Sun 15:40--16:40 +%% \item[Quiz 2] Sun 16:45--17:00 +%% \end{description} +%% \end{frame} + +\begin{frame} + \frametitle{About the Workshop} + \begin{block}{Intended Audience} + \begin{itemize} + \item Engg., Mathematics and Science teachers. + \item Interested students from similar streams. + \end{itemize} + \end{block} + + \begin{block}{Goal: Successful participants will be able to} + \begin{itemize} + \item Use Python as a basic Plotting tool. + \item Understand how to use Python as a scripting and problem solving language. + + \end{itemize} + \end{block} +\end{frame} + +\section{Getting started} +\begin{frame} +\frametitle{Checklist} + \begin{itemize} + \item IPython + \item Pylab + %% \item Editor: We recommend scite. + %% \item Data files: + %% \begin{itemize} + %% \item \typ{sslc1.txt} + %% \item \typ{pendulum.txt} + %% \item \typ{points.txt} + %% \item \typ{pos.txt} + %% \end{itemize} + %% \item Python scripts: + %% \begin{itemize} + %% \item \typ{sslc_allreg.py} + %% \item \typ{sslc_science.py} + %% \end{itemize} + %% \item Images + %% \begin{itemize} + %% \item \typ{lena.png} + %% \item \typ{smoothing.gif} + \end{itemize} + %% \end{enumerate} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Starting up \ldots} +\begin{block}{} +\begin{verbatim} + $ ipython -pylab +\end{verbatim} +\end{block} +\begin{lstlisting} + In []: print "Hello, World!" + Hello, World! +\end{lstlisting} +Exiting +\begin{lstlisting} + In []: ^D(Ctrl-D) + Do you really want to exit([y]/n)? y +\end{lstlisting} +\end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{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} + +\section{Plotting} + +\subsection{Drawing plots} +\begin{frame}[fragile] +\frametitle{First Plot} +\begin{columns} + \column{0.20\textwidth} + \hspace*{-0.12in} + \includegraphics[height=1.2in, interpolate=true]{data/firstplot} + \column{0.7\textwidth} + \begin{block}{} + \begin{small} +\begin{lstlisting} +In []: x=lins +In []: x=linspace( + ... : (Ctrl-C) +In []: x = linspace(0, 2*pi, 50) +In []: plot(x, sin(x)) +\end{lstlisting} + \end{small} + \end{block} + \begin{block}{Ipython Feature} + \begin{itemize} + \item Use Tab for auto-suggestions. + \item In []: (Ctrl-C) to get back In[] prompt from ... + \end{itemize} + \end{block} +\end{columns} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Function Documentation} +\begin {block}{} +\begin{lstlisting} +In []: linspace? +\end{lstlisting} +\end{block} +\begin{block}{Ipython Feature} + \begin{itemize} + \item linspace? , ? mark after a function shows its documentation + \item q to exit help + \end{itemize} + \end{block} +\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} +\begin{lstlisting} +x[0] = start +x[num - 1] = end +\end{lstlisting} +\vspace*{.35in} +\begin{block}{\typ{plot(x, y)}} +plots \typ{x} and \typ{y} using default line style and color +\end{block} +%\inctime{10} +\end{frame} + +\subsection{Decoration} +\begin{frame}[fragile] +\frametitle{Adding Labels and title} +\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)') +In []: title('Sinusoids') + + \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} + +\subsection{More decoration} +\begin{frame}[fragile] +\frametitle{ Legends} +\vspace*{-0.15in} +% \begin{block}{} +% \small +\begin{lstlisting} +In []: legend(['sin(x)']) +\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(x)'], loc = 'center') +\end{lstlisting} +\end{block} + +\begin{columns} + \column{0.6\textwidth} + \includegraphics[height=1.5in, interpolate=true]{data/position} +\column{0.35\textwidth} +\vspace{-0.15in} +\begin{lstlisting} +'best' +'right' +'center' +\end{lstlisting} +\end{columns} +\begin{block}{Ipython Feature} + \begin{itemize} + \item Use up arrow and down arrow to get old commands . + \end{itemize} + \end{block} + +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Annotate a point } + +\begin{lstlisting} +In []:annotate('origin', xy = (0, 0)) +\end{lstlisting} + + +\begin{columns} + \column{0.6\textwidth} + \includegraphics[height=2in, interpolate=true]{data/annotate} +\column{0.45\textwidth} +\vspace{-0.2in} +%% \begin{lstlisting} +%% 'best' +%% 'right' +%% 'center' +%% \end{lstlisting} +\end{columns} +\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{Saving \& Closing} +\begin{lstlisting} +In []: savefig('sin.png') + +\end{lstlisting} +\end{frame} +%% \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} + + + + + + +\section{Multiple plots} +\begin{frame}[fragile] +\frametitle{Overlaid Plots} +\begin{lstlisting} +In []: plot(x, cos(x)) +In []: xlabel('x') +In []: ylabel('f(x)') +In []: legend(['sin(x)', 'cos(x)']) +In []: clf() +\end{lstlisting} +\emphbar{By default plots would be overlaid!} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Plotting separate figures} +\begin{lstlisting} +In []: figure(1) +In []: plot(x, sin(x)) +In []: figure(2) +In []: plot(x, cos(x)) +In []: figure(1) +In []: title('sin(x)') +In []: close() +In []: close() +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Showing it better} +\vspace{-0.15in} +\begin{lstlisting} +In []: plot(x, sin(x), 'g' ,linewidth=2) + +In []: clf() + +\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{Showing it better , Using Dots } +\vspace{-0.15in} +\begin{lstlisting} +In []: plot(x, sin(x), '.') + +In []: clf() + +\end{lstlisting} +\vspace*{-0.2in} +\begin{center} + \includegraphics[height=2.2in, interpolate=true]{data/dash} +\end{center} +%\inctime{10} +\end{frame} + + + + + +%% \begin{frame}[fragile] +%% \frametitle{Review Ipython } +%% \vspace{-0.15in} +%% \begin{lstlisting} +%% In []: lins + +%% In []: function? +%% :q +%% (Ctrl-D) +%% In []: ^C(Ctrl-C) + + + +%% \end{lstlisting} +%% %\inctime{10} +%% \end{frame} + + +\begin{frame}[fragile] +\frametitle{Review Ipython Features } +\vspace{-0.1in} +\begin{itemize} +\item Entering Ipython. +\begin{verbatim} + $ ipython -pylab +\end{verbatim} +\item Seeing the documentation . +\begin{lstlisting} +In []: linspace? +\end{lstlisting} +\item Quitting the documentation . +\begin{lstlisting} +:q +\end{lstlisting} +\item Quitting from the ... prompt. +\begin{lstlisting} +Ctrl-C +\end{lstlisting} +\end{itemize} +\begin{itemize} +\item Quitting Ipython +\begin{lstlisting} +Ctrl-D +\end{lstlisting} +\end{itemize} + + +%\inctime{10} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Review Plotting } +\vspace{-0.15in} +\begin{itemize} +\item Outputting things. +\end{itemize} +\begin{lstlisting} +In []: print ''hello world'' +\end{lstlisting} +\begin{itemize} +\item Create equally spaced points. +\end{itemize} +\begin{lstlisting} +In []: x=linspace(0,2*pi,50) +\end{lstlisting} +\begin{itemize} +\item Simple Plotting +\end{itemize} +\begin{lstlisting} +In []: plot(x,sin(x),'.',linewidth=2) +\end{lstlisting} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Review Plotting } +\vspace{-0.1in} +\begin{itemize} +\item label axis +\end{itemize} +\begin{lstlisting} +In []: xlabel('x') +\end{lstlisting} +\begin{itemize} +\item Title The plot +\end{itemize} +\begin{lstlisting} +In []: title('sinusoid') +\end{lstlisting} +\begin{itemize} +\item Place legend at a proper place +\end{itemize} +\begin{lstlisting} +In []: legend(['sin(x)']) +\end{lstlisting} +\begin{itemize} +\item Annotate the plot +\end{itemize} +\begin{lstlisting} +In []:annotate('origin' , xy=(0,0)) +\end{lstlisting} +%\inctime{10} +\end{frame} + + + + +\begin{frame}[fragile] +\frametitle{Review Plotting } +\vspace{-0.15in} +\begin{itemize} +\item Save a plot +\end{itemize} +\begin{lstlisting} +In []:savefig('sine.png') +\end{lstlisting} +\begin{itemize} +\item Managing multiple plots using figure +\end{itemize} +\begin{lstlisting} +In []:figure(1) +\end{lstlisting} +\begin{itemize} +\item Clearing plot +\end{itemize} +\begin{lstlisting} +In []: clf() +\end{lstlisting} +\begin{itemize} +\item Closing plot +\end{itemize} +\begin{lstlisting} +In []: close() +\end{lstlisting} + +%\inctime{10} +\end{frame} + + + + + + + +%% \begin{frame}[fragile] +%% \frametitle{Review , Function and Commands } +%% \vspace{-0.15in} +%% \begin{lstlisting} + +%% In []: print 'hello world' +%% In []: x=linspace(0,2*pi,50) +%% In []: plot(x, sin(x), 'g',linewidth=2) +%% In []: xlabel('x') +%% In []: ylabel('sin(x)') +%% In []: title('sinusoid') +%% In []: legend(['sin(x)','cos(x)']) +%% In []: annotate('origin', xy=(0,0)) +%% In []: savefig('sine.png') +%% In []: clf() +%% In []: figure(1) +%% \end{lstlisting} +%% %\inctime{10} +%% \end{frame} + + + +%% \begin{frame}[fragile] +%% \frametitle{Annotating} +%% \vspace*{-0.15in} +%% \begin{lstlisting} +%% In []: annotate('local max', xy=(1.5, 1)) +%% \end{lstlisting} +%% \vspace*{-0.2in} +%% \begin{center} +%% \includegraphics[height=2in, interpolate=true]{data/annotate} +%% \end{center} +%% \end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{Axes lengths} +%% \emphbar{Get the axes limits} +%% \begin{lstlisting} +%% In []: xmin, xmax = xlim() +%% In []: ymin, ymax = ylim() +%% \end{lstlisting} +%% \emphbar{Set the axes limits} +%% \begin{lstlisting} +%% In []: xmax = 2*pi +%% In []: xlim(xmin, xmax) +%% In []: ylim(ymin-0.2, ymax+0.2) +%% \end{lstlisting} +%% \end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{Review Problem} +%% \begin{enumerate} +%% \item Plot x, -x, sin(x), xsin(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} +%% \begin{lstlisting} +%% In []: x=linspace(-5*pi, 5*pi, 500) +%% In []: plot(x, x, 'b') +%% In []: plot(x, -x, 'b') +%% \end{lstlisting} +%% $\vdots$ +%% \end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{Review Problem \ldots} +%% \begin{lstlisting} +%% In []: plot(x, sin(x), 'g', linewidth=2) +%% In []: plot(x, x*sin(x), 'r', +%% linewidth=3) +%% \end{lstlisting} +%% \begin{lstlisting} +%% In []: legend(['x', '-x', 'sin(x)', +%% 'xsin(x)']) +%% In []: annotate('origin', xy = (0, 0)) +%% In []: xlim(-5*pi, 5*pi) +%% In []: ylim(-5*pi, 5*pi) +%% \end{lstlisting} +%% \end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{Saving Commands} +%% Save commands of review problem into file +%% \begin{itemize} +%% \item Use \typ{\%hist} command of IPython +%% \item Identify the required line numbers +%% \item Then, use \typ{\%save} command of IPython +%% \end{itemize} +%% \typ{In []: \%hist}\\ +%% \typ{In []: \%save four_plot.py} \alert{\typ{16 18-27}} +%% \begin{block}{Careful about errors!} +%% \kwrd{\%hist} will contain the errors as well,\\ +%% so be careful while selecting line numbers. +%% \end{block} +%% \end{frame} + +%% \begin{frame} +%% \frametitle{Python Scripts\ldots} +%% This is called a Python Script. +%% \begin{itemize} +%% \item run the script in IPython using \typ{\%run -i four_plot.py}\\ +%% \end{itemize} +%% \end{frame} + +%% \begin{frame}[fragile] +%% \frametitle{What did we learn?} +%% \begin{itemize} +%% \item \kwrd{\%hist} +%% \item Saving commands to a script +%% \item Running a script using \kwrd{\%run -i} +%% \item Creating simple plots. +%% \item Adding labels and legends. +%% \item Annotating plots. +%% \item Changing the looks: size, linewidth +%% \end{itemize} +%% \end{frame} + +\end{document} +