%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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{split} \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[Plotting using Python]{Plotting experimental data\\} \author[FOSSEE] {FOSSEE} \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} \date[] {31, October 2009\\Day 1, Session 2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\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} \titlepage \end{frame} \begin{frame} \frametitle{Outline} \tableofcontents % You might wish to add the option [pausesections] \end{frame} \section{Creating and running scripts} \begin{frame}[fragile] \frametitle{Python Scripts} \begin{itemize} \item Let us now put all the commands used in the review problem into a file. \item The following commands of IPython help us do this. \end{itemize} \begin{lstlisting} In []: %hist In []: %hist -n \end{lstlisting} \end{frame} \begin{frame} \frametitle{Python Scripts\ldots} \begin{itemize} \item Open a new file in an \alert{editor} \item Copy and paste required lines from the output of \typ{\%hist -n} \item Save the file as \typ{first_plot.py} \end{itemize} \begin{itemize} \item run the file in IPython using \typ{\%run first_plot.py}\\ \end{itemize} \end{frame} \section{Plotting Points} \begin{frame}[fragile] \frametitle{Simple Pendulum - L and T} \begin{itemize} \item Given data of Length and Time-period of a Simple pendulum \item We wish to plot L vs. \alert{$T^2$} \end{itemize} \begin{lstlisting} In []: L = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] In []: T = [0.6529, 0.8485, 1.0590, 1.2390, 1.4124, 1.5061, 1.6441, 1.7949, 1.8758] \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Simple Pendulum \ldots} \begin{itemize} \item Let us begin with $L$ vs. \alert{$T$} \end{itemize} \begin{lstlisting} In []: plot(L, T) \end{lstlisting} \begin{itemize} \item But we wish to plot points! \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Plotting points} \begin{lstlisting} In []: clf() In []: plot(L, T, 'o') Out[]: [] In []: clf() In []: plot(L, T, '.') Out[]: [] \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Additional Plotting Attributes} \begin{itemize} \item \kwrd{'o'} - Dots \item \kwrd{'.'} - Smaller Dots \item \kwrd{'-'} - Lines \item \kwrd{'- -'} - Dashed lines \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Plotting $L$ vs. $T^2$} \begin{itemize} \item We must square each of the values in T \item How to do it? \item T is a \kwrd{list} and we use a \kwrd{for} loop to iterate over it \end{itemize} \end{frame} \section{File Handling} \begin{frame}[fragile] \frametitle{File and \kwrd{for}} \begin{lstlisting} In []: f = open('dummyfile') In []: for line in f: ...: print line ...: \end{lstlisting} \inctime{5} \end{frame} \section{Strings} \begin{frame}{Strings} Anything within ``quotes'' is a string! \end{frame} \begin{frame}[fragile]\frametitle{Strings and \typ{split()}} \begin{lstlisting} In []: a = 'hello world' In []: a.split() Out[]: ['hello', 'world'] \end{lstlisting} Now try this: \begin{lstlisting} In []: b = 'KD, MCS, PC, SC, SV' In []: b.split(',') Out[]: ['KD', 'MCS', 'PC', 'SC', 'SV'] \end{lstlisting} \inctime{5} \end{frame} \section{Lists} \begin{frame}[fragile] \frametitle{List creation and indexing} \begin{lstlisting} In []: lst = [1,2,3,4] In []: lst[0]+lst[1]+lst[-1] Out[]: 7 \end{lstlisting} \begin{itemize} \item Indices start with ? \item Negative indices indicate ? \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{List: slices} \typ{list[initial:final:step]} \begin{lstlisting} In []: lst[1:3] # A slice. Out[]: [2, 3] In []: lst[1:-1] Out[]: [2, 3] \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{List methods} \begin{lstlisting} In []: lst.append([6,7]) In []: lst Out[]: [1, 2, 3, 4, 5, [6, 7]] \end{lstlisting} \inctime{10} \end{frame} \end{document}