75 \title[Interactive Plotting]{Python for Science and Engg: Interactive Plotting} |
75 \title[Interactive Plotting]{Python for Science and Engg: Interactive Plotting} |
76 |
76 |
77 \author[FOSSEE group] {FOSSEE} |
77 \author[FOSSEE group] {FOSSEE} |
78 |
78 |
79 \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} |
79 \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} |
80 \date[] {SciPy 2010, Introductory tutorials,\\ |
80 \date[] {SciPy.in 2010, Tutorials} |
81 Day 1, Session 1} |
|
82 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
83 |
82 |
84 %\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo} |
83 %\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo} |
85 %\logo{\pgfuseimage{iitmlogo}} |
84 %\logo{\pgfuseimage{iitmlogo}} |
86 |
85 |
120 %% \begin{frame} |
119 %% \begin{frame} |
121 %% \frametitle{Outline} |
120 %% \frametitle{Outline} |
122 %% \tableofcontents |
121 %% \tableofcontents |
123 %% % You might wish to add the option [pausesections] |
122 %% % You might wish to add the option [pausesections] |
124 %% \end{frame} |
123 %% \end{frame} |
125 |
|
126 \begin{frame} |
|
127 \frametitle{Acknowledgement} |
|
128 \Large |
|
129 \begin{center} |
|
130 \alert{FOSSEE group (\url{fossee.in})} \\ |
|
131 based at\\ |
|
132 \alert{IIT Bombay}\\ |
|
133 and funded by\\ |
|
134 The National Mission on Education through ICT, \\ |
|
135 \alert{Ministry of HRD, India} |
|
136 \end{center} |
|
137 \end{frame} |
|
138 |
|
139 \begin{frame} |
|
140 \frametitle{Tutorial Schedule: Day 1} |
|
141 \begin{description} |
|
142 \item[Session 1-2] 08:00--10:00 |
|
143 \item[Coffee Break] 10:00--10:20 |
|
144 \item[Session 3-4] 10:20--12:20 |
|
145 \item[Lunch Break] 12:20--13:40 |
|
146 \item[Quiz 1] 13:40--13:55 |
|
147 \item[Exercises] 14:00--14:40 |
|
148 \item[Session 5] 14:40--15:40 |
|
149 \item[Coffee Break] 15:40--16:00 |
|
150 \item[Quiz 2] 16:00--16:15 |
|
151 \item[Session 6-7] 16:15--18:00 |
|
152 \end{description} |
|
153 \end{frame} |
|
154 |
|
155 \begin{frame} |
|
156 \frametitle{Tutorial Schedule: Day 2} |
|
157 \begin{description} |
|
158 \item[Session 1] 08:00--9:00 |
|
159 \item[Session 2] 9:00--10:00 |
|
160 \item[Coffee] 10:00--10:20 |
|
161 \item[Quiz 3] 10:20--10:35 |
|
162 \item[Exercises] 10:35--11:30 |
|
163 \item[Session 3] 11:30--12:20 |
|
164 \end{description} |
|
165 \end{frame} |
|
166 |
124 |
167 \section{Checklist} |
125 \section{Checklist} |
168 \begin{frame} |
126 \begin{frame} |
169 \frametitle{Checklist} |
127 \frametitle{Checklist} |
170 \begin{enumerate} |
128 \begin{enumerate} |
189 \item \typ{smoothing.gif} |
147 \item \typ{smoothing.gif} |
190 \end{itemize} |
148 \end{itemize} |
191 \end{enumerate} |
149 \end{enumerate} |
192 \end{frame} |
150 \end{frame} |
193 |
151 |
194 \begin{frame} |
|
195 \frametitle{About the Tutorial} |
|
196 \begin{block}{Intended Audience} |
|
197 \begin{itemize} |
|
198 \item Engg., Mathematics and Science researchers with a |
|
199 reasonable programming background. |
|
200 \end{itemize} |
|
201 \end{block} |
|
202 |
|
203 \begin{block}{Goal: Successful participants will be able to} |
|
204 \begin{itemize} |
|
205 \item Use Python as plotting, computational tool. |
|
206 \item Understand how to use Python as a scripting and problem solving language. |
|
207 \end{itemize} |
|
208 \end{block} |
|
209 \end{frame} |
|
210 |
|
211 %% \begin{frame}[fragile] |
|
212 %% \frametitle{The Python interpreter \ldots} |
|
213 %% \begin{block}{} |
|
214 %% \begin{lstlisting} |
|
215 %% $ python |
|
216 %% \end{lstlisting} %$ |
|
217 %% \end{block} |
|
218 %% \begin{lstlisting} |
|
219 %% >>> print "Hello, World!" |
|
220 %% Hello, World! |
|
221 %% \end{lstlisting} |
|
222 %% Exiting |
|
223 %% \begin{lstlisting} |
|
224 %% >>> ^D(Ctrl-D) |
|
225 %% $ |
|
226 %% \end{lstlisting} %$ |
|
227 %% \end{frame} |
|
228 |
|
229 \section{Starting up IPython} |
152 \section{Starting up IPython} |
230 \begin{frame}[fragile] |
153 \begin{frame}[fragile] |
231 \frametitle{Starting up \ldots} |
154 \frametitle{Starting up \ldots} |
232 \begin{block}{} |
155 \begin{block}{} |
233 \begin{lstlisting} |
156 \begin{lstlisting} |
240 \end{lstlisting} |
163 \end{lstlisting} |
241 Exiting |
164 Exiting |
242 \begin{lstlisting} |
165 \begin{lstlisting} |
243 In []: ^D(Ctrl-D) |
166 In []: ^D(Ctrl-D) |
244 Do you really want to exit([y]/n)? y |
167 Do you really want to exit([y]/n)? y |
245 \end{lstlisting} |
|
246 \end{frame} |
|
247 |
|
248 %% \section{Ipython with magic} |
|
249 %% \begin{frame}[fragile] |
|
250 %% \frametitle{Let the magic begin \ldots} |
|
251 %% \begin{itemize} |
|
252 %% \item \alert{IPython is an improved interpreter}\\ |
|
253 %% \item \alert{Recommended for Scientific and Computing work}\\ |
|
254 %% \end{itemize} |
|
255 %% \begin{block}{} |
|
256 %% \begin{lstlisting} |
|
257 %% $ ipython -pylab |
|
258 %% \end{lstlisting} %$ |
|
259 %% \end{block} |
|
260 %% \end{frame} |
|
261 |
|
262 \section{Breaking out of loops} |
|
263 \begin{frame}[fragile] |
|
264 \frametitle{Breaking out of Loops} |
|
265 Breaking out of loops |
|
266 \begin{lstlisting} |
|
267 In []: while True: |
|
268 ...: print "Hello, World!" |
|
269 ...: |
|
270 Hello, World! |
|
271 Hello, World!^C(Ctrl-C) |
|
272 ------------------------------------ |
|
273 KeyboardInterrupt |
|
274 \end{lstlisting} |
168 \end{lstlisting} |
275 \end{frame} |
169 \end{frame} |
276 |
170 |
277 \section{Plotting} |
171 \section{Plotting} |
278 \subsection{Drawing plots} |
172 \subsection{Drawing plots} |
349 In []: ylabel('sin(2y)') |
243 In []: ylabel('sin(2y)') |
350 \end{lstlisting} |
244 \end{lstlisting} |
351 \end{frame} |
245 \end{frame} |
352 |
246 |
353 \begin{frame}[fragile] |
247 \begin{frame}[fragile] |
354 \frametitle{IPython tips \ldots} |
248 \frametitle{Title} |
355 |
|
356 \begin{itemize} |
|
357 \item Use \typ{TAB} to complete command |
|
358 \end{itemize} |
|
359 \vspace*{0.5in} |
|
360 |
|
361 {\Large \structure{History}} |
|
362 \begin{itemize} |
|
363 \item Accesses history (also from past sessions) |
|
364 |
|
365 \item Up and down arrows (\typ{Ctrl-p}/\typ{Ctrl-n}) |
|
366 |
|
367 \item Search: \typ{Ctrl-r} and start typing |
|
368 |
|
369 \item \typ{Ctrl-a}: go to start of line |
|
370 |
|
371 \item \typ{Ctrl-e}: end of line |
|
372 |
|
373 \item \typ{Ctrl-k}: kill to end of line |
|
374 \end{itemize} |
|
375 |
|
376 \end{frame} |
|
377 |
|
378 |
|
379 \subsection{More decoration} |
|
380 \begin{frame}[fragile] |
|
381 \frametitle{Title and Legends} |
|
382 \vspace*{-0.15in} |
249 \vspace*{-0.15in} |
383 % \begin{block}{} |
250 % \begin{block}{} |
384 % \small |
251 % \small |
385 \begin{lstlisting} |
252 \begin{lstlisting} |
386 In []: title('Sinusoids') |
253 In []: title('Sinusoids') |
387 In []: legend(['sin(2y)']) |
|
388 \end{lstlisting} |
254 \end{lstlisting} |
389 % \small |
255 % \small |
390 % \end{block} |
256 % \end{block} |
391 \vspace*{-0.1in} |
257 \vspace*{-0.1in} |
392 \begin{center} |
258 \begin{center} |
393 \includegraphics[height=2in, interpolate=true]{data/legend} |
259 \includegraphics[height=2in, interpolate=true]{data/title} |
394 \end{center} |
260 \end{center} |
395 \end{frame} |
261 \end{frame} |
396 |
|
397 \begin{frame}[fragile] |
|
398 \frametitle{Legend Placement} |
|
399 \begin{block}{} |
|
400 \small |
|
401 \begin{lstlisting} |
|
402 In []: legend(['sin(2y)'], loc = 'center') |
|
403 \end{lstlisting} |
|
404 \end{block} |
|
405 |
|
406 \begin{columns} |
|
407 \column{0.6\textwidth} |
|
408 \includegraphics[height=2in, interpolate=true]{data/position} |
|
409 \column{0.45\textwidth} |
|
410 \vspace{-0.2in} |
|
411 \begin{lstlisting} |
|
412 'best' |
|
413 'right' |
|
414 'center' |
|
415 \end{lstlisting} |
|
416 \end{columns} |
|
417 \end{frame} |
|
418 |
|
419 %% \begin{frame}[fragile] |
|
420 %% \frametitle{For arbitrary location} |
|
421 %% \vspace*{-0.1in} |
|
422 %% \begin{lstlisting} |
|
423 %% In []: legend(['sin(2y)'], loc=(.8,.1)) |
|
424 %% \end{lstlisting} |
|
425 %% \emphbar{Specify south-east corner position} |
|
426 %% %\vspace*{-0.2in} |
|
427 %% \begin{center} |
|
428 %% \includegraphics[height=2in, interpolate=true]{data/loc} |
|
429 %% \end{center} |
|
430 %% %\inctime{10} |
|
431 %% \end{frame} |
|
432 |
262 |
433 \begin{frame}[fragile] |
263 \begin{frame}[fragile] |
434 \frametitle{Saving \& Closing} |
264 \frametitle{Saving \& Closing} |
435 \begin{lstlisting} |
265 \begin{lstlisting} |
436 In []: savefig('sin.png') |
266 In []: savefig('sin.png') |
448 \item rgba |
278 \item rgba |
449 \item svg |
279 \item svg |
450 \end{itemize} |
280 \end{itemize} |
451 \end{frame} |
281 \end{frame} |
452 |
282 |
|
283 \begin{frame}[fragile] |
|
284 \frametitle{IPython tips \ldots} |
|
285 |
|
286 \begin{itemize} |
|
287 \item Use \typ{TAB} to complete command |
|
288 \end{itemize} |
|
289 \vspace*{0.5in} |
|
290 |
|
291 {\Large \structure{History}} |
|
292 \begin{itemize} |
|
293 \item Accesses history (also from past sessions) |
|
294 |
|
295 \item Up and down arrows (\typ{Ctrl-p}/\typ{Ctrl-n}) |
|
296 \end{itemize} |
|
297 |
|
298 \end{frame} |
|
299 |
453 \section{Multiple plots} |
300 \section{Multiple plots} |
454 \begin{frame}[fragile] |
301 \begin{frame}[fragile] |
455 \frametitle{Overlaid Plots} |
302 \frametitle{Overlaid Plots} |
456 \begin{lstlisting} |
303 \begin{lstlisting} |
457 In []: clf() |
304 In []: clf() |
458 In []: plot(y, sin(y)) |
305 In []: plot(y, sin(y)) |
459 In []: plot(y, cos(y)) |
306 In []: plot(y, cos(y)) |
460 In []: xlabel('y') |
307 In []: xlabel('y') |
461 In []: ylabel('f(y)') |
308 In []: ylabel('f(y)') |
|
309 \end{lstlisting} |
|
310 \emphbar{By default plots would be overlaid!} |
|
311 \end{frame} |
|
312 |
|
313 \begin{frame}[fragile] |
|
314 \frametitle{Legend} |
|
315 \vspace*{-0.15in} |
|
316 % \begin{block}{} |
|
317 % \small |
|
318 \begin{lstlisting} |
462 In []: legend(['sin(y)', 'cos(y)']) |
319 In []: legend(['sin(y)', 'cos(y)']) |
463 \end{lstlisting} |
320 \end{lstlisting} |
464 \emphbar{By default plots would be overlaid!} |
321 % \small |
|
322 % \end{block} |
|
323 \vspace*{-0.1in} |
|
324 \begin{center} |
|
325 \includegraphics[height=2in, interpolate=true]{data/legend} |
|
326 \end{center} |
|
327 \end{frame} |
|
328 |
|
329 \begin{frame}[fragile] |
|
330 \frametitle{Legend Placement} |
|
331 \begin{block}{} |
|
332 \small |
|
333 \begin{lstlisting} |
|
334 In []: legend(['sin(y)', 'cos(y)'], loc='center') |
|
335 \end{lstlisting} |
|
336 \end{block} |
|
337 |
|
338 \begin{columns} |
|
339 \column{0.6\textwidth} |
|
340 \includegraphics[height=2in, interpolate=true]{data/position} |
|
341 \column{0.45\textwidth} |
|
342 \vspace{-0.2in} |
|
343 \begin{lstlisting} |
|
344 'best' |
|
345 'right' |
|
346 'center' |
|
347 \end{lstlisting} |
|
348 \end{columns} |
465 \end{frame} |
349 \end{frame} |
466 |
350 |
467 \begin{frame}[fragile] |
351 \begin{frame}[fragile] |
468 \frametitle{Plotting separate figures} |
352 \frametitle{Plotting separate figures} |
469 \begin{lstlisting} |
353 \begin{lstlisting} |
616 \begin{block}{} |
500 \begin{block}{} |
617 \typ{\%save script_name line_numbers} |
501 \typ{\%save script_name line_numbers} |
618 \end{block} |
502 \end{block} |
619 Line numbers can be specified individually separated by spaces or as a range separated by a dash.\\ |
503 Line numbers can be specified individually separated by spaces or as a range separated by a dash.\\ |
620 \begin{block}{} |
504 \begin{block}{} |
621 \typ{\%save four_plot.py} \alert{\typ{ 16 18-27}} \\ |
505 \typ{\%save four_plot.py} \alert{\typ{ 16-18 21 25 27-32}} \\ |
622 \end{block} |
506 \end{block} |
623 This saves from the history the commands entered on line numbers \alert{16, 18, 19, 20, \ldots 27} |
507 This saves from the history the commands entered on line numbers \alert{16, 17, 18, 21, 25, 27, 28, 29, 30, 31, 32} |
624 \end{frame} |
508 \end{frame} |
625 |
509 |
626 \begin{frame} |
510 \begin{frame} |
627 \frametitle{Python Scripts\ldots} |
511 \frametitle{Python Scripts\ldots} |
628 Now, four\_plot.py is called a Python Script. |
512 Now, four\_plot.py is called a Python Script. |
635 To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\ |
519 To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\ |
636 \end{block} |
520 \end{block} |
637 \end{frame} |
521 \end{frame} |
638 |
522 |
639 \begin{frame}[fragile] |
523 \begin{frame}[fragile] |
640 \frametitle{Result graph} |
524 \frametitle{Doing this in Sage\ldots} |
641 \begin{center} |
525 \begin{itemize} |
642 \includegraphics[height=3in, interpolate=true]{data/four_plot} |
526 \item Change the language to =Python= |
643 \end{center} |
527 \item Make a simple plot and save it |
|
528 \begin{lstlisting} |
|
529 from pylab import * |
|
530 x = linspace(0, 2*pi, 50) |
|
531 plot(x, sin(x)) |
|
532 savefig('sample-sin.png') |
|
533 \end{lstlisting} |
|
534 \end{itemize} |
644 \end{frame} |
535 \end{frame} |
645 |
536 |
646 \begin{frame}[fragile] |
537 \begin{frame}[fragile] |
647 \frametitle{What did we learn?} |
538 \frametitle{What did we learn?} |
648 \begin{itemize} |
539 \begin{itemize} |
653 \item Changing the looks: size, linewidth |
544 \item Changing the looks: size, linewidth |
654 \item Accessing history, documentation |
545 \item Accessing history, documentation |
655 \item \kwrd{\%hist} - History of commands |
546 \item \kwrd{\%hist} - History of commands |
656 \item \kwrd{\%save} - Saving commands |
547 \item \kwrd{\%save} - Saving commands |
657 \item Running a script using \kwrd{\%run -i} |
548 \item Running a script using \kwrd{\%run -i} |
|
549 \item Using \lstinline|pylab| in Sage |
658 \end{itemize} |
550 \end{itemize} |
659 \end{frame} |
551 \end{frame} |
660 |
552 |
661 \end{document} |
553 \end{document} |
662 |
554 |