# HG changeset patch # User anoop # Date 1286576647 -19800 # Node ID 25b4e962b55eb600fc43703782f95463fa875112 # Parent 2ed3c5a3f8563da205be883411dac8f3c5ec3524 added base scripts and questions except for matrices and other-type-of-plots. diff -r 2ed3c5a3f856 -r 25b4e962b55e dictionaries.rst --- a/dictionaries.rst Sat Oct 09 02:59:42 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -.. 8.4 LO: dictionaries (2) -.. ------------------------ -.. * empty -.. * filled -.. * accessing via keys -.. * .values(), .keys() -.. * in -.. * iteration - -============ -Dictionaries -============ - -{{{ show the welcome slide }}} - -Welcome to the spoken tutorial on dictionaries. - -{{{ switch to next slide, outline slide }}} - -In this tutorial, we will see how to create empty dictionaries, learn -about keys and values of dictionaries. Checking for elements and -iterating over elements. - -{{{ switch to next slide on overview of dictionaries }}} - -A dictionary in general, is designed to look up meanings of -words. Similarly, Python dictionary is also designed to look up for a -specific key and retrieve the corresponding value. Dictionaries are -data structures that provide key-value mappings. Dictionaries are -similar to lists except that instead of the values having integer -indexes, dictionaries have keys or strings as indexes. - -Before we can proceed, start your IPython interpreter with the -``-pylab`` option. - -{{{ start ipython interpreter by issuing command ipython -pylab }}} - -Let us start by creating an empty dictionary, type the following in -your IPython interpreter. -:: - - mt_dict = {} - -Notice that unlike lists curly braces are used define ``dictionary``, - -{{{ move the mouse over curly braces to grab attention }}} - -Now let us see how to create a filled dictionary, -:: - - extensions = {'jpg' : 'JPEG Image', 'py' : 'Python script', 'html' : 'Html document', 'pdf' : 'Portable Document Format'} - -Notice that each key-value pair is separated by a comma - -{{{ move the mouse over the commas to grab attention }}} - -and each key and value are separated using a colon. - -{{{ move the mouse over the colon one by one to grab attention }}} - -Here, we defined four entries in the dictionary extensions. The keys -are - -{{{ spell the keys letter by letter }}} - -jpg, py, html, and pdf. - -Simply type, -:: - - extensions - -in the interpreter to see the content of the dictionary. Notice that -in dictionaries the order cannot be predicted and you can see that the -values are not in the order that we entered in. - -Like in lists, the elements in a dictionary can be accessed using the -index, here the index is the key. Try, -:: - - print extensions['jpg'] - -It printed JPEG Image. And now try, -:: - - print extensions['zip'] - -Well it gave us an error, saying that the key 'zip' is not in the -dictionary. - -Pause here for some time and try few more keys. Also try jpg in -capital letters. - -{{{ switch to next slide, adding and deleting keys and values in -dictionaries }}} - -Well that was about creating dictionaries, now how do we add or delete -items. We can add new items into dictionaries as, -:: - - extensions['cpp'] = 'C++ code' - -and delete items using the ``del`` keyword as, -:: - - del extension['pdf'] - -Let us check the content of the dictionary now, -:: - - extensions - -So the changes have been made. Now let us try one more thing, -:: - - extensions['cpp'] = 'C++ source code' - extensions - -As you can see, it did not add a new thing nor gave an error, but it -simply replaces the existing value with the new one. - -Now let us learn how to check if a particular key is present in the -dictionary. For that we can use ``in``, -:: - - 'py' in extensions - 'odt' in extensions - -So in short it will return ``True`` if the key is found in the -dictionary, and will return ``False`` if key is not present. Note that -we can check only for container-ship of keys in dictionaries and not -values. - -{{{ switch to next slide, Retrieve keys and values }}} - -Now let us see how to retrieve the keys and values. We can use the -method ``keys()`` for getting a list of the keys in a particular -dictionary and the method ``values()`` for getting a list of -values. Let us try them, -:: - - extensions.keys() - -It returned the ``list`` of keys in the dictionary extensions. And now -the other one, -:: - - extensions.values() - -It returned the ``list`` of values in the dictionary. - -{{{ switch to next slide, problem statement for the next solved -exercise }}} - -Now let us try to print the data in the dictionary. We can use ``for`` -loop to iterate. -:: - - for each in extensions.keys(): - print each, "-->", extensions[each] - - -{{{ switch to next slide, recap }}} - -This brings us to the end of this tutorial, we learned dictionaries -and saw how to create an empty dictionary, build a dictionary with -some data in it, adding data, ``keys()`` and ``values()`` methods, and -iterating over the dictionaries. - -{{{ switch to next slide, thank you slide }}} - -Thank you! - -.. Author: Anoop Jacob Thomas - Reviewer 1: - Reviewer 2: - External reviewer: diff -r 2ed3c5a3f856 -r 25b4e962b55e getting_started_with_arrays.rst --- a/getting_started_with_arrays.rst Sat Oct 09 02:59:42 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -.. 4.1 LO: getting started with arrays (2) [anoop] -.. ------------------------------------------------ -.. * why arrays -.. + speed - simply say -.. + array level operations -.. * creating arrays -.. + direct data -.. + list conversion -.. + homogeneous -.. + builtins - identitiy, zeros, -.. * array operations -.. + =+ - * /= - -=========================== -Getting started with Arrays -=========================== - -{{{ show the welcome slide }}} - -Welcome to the spoken tutorial on getting started with arrays. - -{{{ switch to next slide, outline slide }}} - -In this tutorial, we will learn about arrays, how to convert a list -into an array and also why an array is preferred over lists. And array -operations. - -{{{ switch to next slide on overview of array }}} - -Arrays are homogeneous data structures, unlike lists, arrays cannot -have heterogeneous data elements, that is, it can have only one type -of data type, either all integers, or strings, or float, and not a -mix. - -Arrays are really fast in mathematical operations when compared to -lists, it is at least 80 to 100 times faster than lists. - -{{{ switch to the next slide, creating arrays }}} - -I am assuming that you have your IPython interpreter running with the -``-pylab`` option, so that you have the required modules loaded. - -To create an array we will use the function ``array()`` as, -:: - - a1 = array([1,2,3,4]) - -Notice that here we created a one dimensional array. Also notice the -object we passed to create an array. Now let us see how to create a -two dimensional array. -:: - - a2 = array([[1,2,3,4],[5,6,7,8]]) - -Now, let us see how to convert a list object to an array. As you have -already seen, in both of the previous statements we have passed a -list, so creating an array can be done so, first let us create a list -``l1`` -:: - - l1 = [1,2,3,4] - -Now we can convert the list to an array as, -:: - - a3 = array(l1) - - -{{{ switch to the next slide, problem statement of unsolved exercise 1 }}} - -Create a three dimensional array of the order (2,2,4). - -{{{ switch to the next slide, shape of an array }}} - -To find the shape of an array we can use the object ``.shape``, let us -check the shape of the arrays we have created so far, -:: - - a1.shape - -``a1.shape`` object is a tuple, and since a1 is a single dimensional -array, it returned a tuple (4,). - -{{{ switch to the next slide, unsolved exercise 2 }}} - -Find out the shape of the other two arrays that we have created. - -{{{ Array can have only a single type of data }}} - -Now let us try to create a new array with a mix of elements and see -what will happen, -:: - - a4 = array([1,2,3,'a string']) - -Well, we expected an error as previously I said that an array can have -only homogeneous elements, but it didn't give an error. Let us check -the values in the new array created. In your IPython terminal type, -:: - - a4 - -Did you notice it, - -{{{ highlight all the array elements one by one using mouse -movements }}} - -all the elements have been implicitly type casted as string, though -our first three elements were integers. - -{{{ switch to the next slide, identity & zeros methods }}} - -An identity matrix is a square matrix in which all the diagonal -elements are one and rest of the elements zero. We can create an -identity matrix using the method ``identity()``. - -The function ``identity()`` takes an integer argument, -:: - - identity(3) - -As you can see the identity method returned a three by three square -array with all the diagonal elements as one and the rest of the -elements as zero. - -``zeros()`` function accepts a tuple, which is the order of the array -we want to create, and it generates an array with all elements zero. - -{{{ switch to the next slide, problem statement of the solved exercise -1 }}} - -Let us creates an array of the order four by five with all the -elements zero. We can do it using the method zeros, -:: - - zeros((4,5)) - -Notice that we passed a tuple to the function zeros. - -{{{ switch to next slide, learning exercise }}} - -We learned two functions ``identity()`` and ``zeros()``, find out more -about the functions ``zeros_like()``, ``ones()``, ``ones_like()``. - -{{{ switch to next slide, array operations }}} - -Try the following, first check the value of a1, -:: - - a1 - -``a1`` is a single dimensional array, and now try, -:: - - a1 * 2 - -It returned a new array with all the elements multiplied by 2. -:: - - a1 - -note that the value of a1 still remains the same. - -Similarly with addition, -:: - - a1 + 2 - -it returns a new array, with all the elements summed with two. But -again notice that the value of a1 has not been changed. -:: - - a1 - -You may change the value of a1 by simply assigning the newly returned -array as, -:: - - a1 += 2 - -Notice the change in elements of a, -:: - - a - -We can use all the mathematical operations with arrays, Now let us try -this -:: - - a1 = array([1,2,3,4]) - a2 = array([1,2,3,4]) - a1 + a2 - -Returns an array with element by element addition, -:: - - a1 * a2 - -Returns an array with element by element multiplication, notice that -it does not perform matrix multiplication. - -{{{ switch to next slide, recap slide }}} - -So this brings us to the end of this tutorial, in this tutorial we covered basics of arrays, how to create an array, converting a list to an array, basic array operations etc. - -{{{ switch to next slide, thank you }}} - -Thank you! - -.. Author: Anoop Jacob Thomas - Reviewer 1: - Reviewer 2: - External reviewer: diff -r 2ed3c5a3f856 -r 25b4e962b55e getting_started_with_for.rst --- a/getting_started_with_for.rst Sat Oct 09 02:59:42 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -.. 3.2 LO: getting started with =for= (2) [anoop] -.. ----------------------------------------------- -.. * blocks in python -.. + (indentation) -.. * blocks in ipython -.. + ... prompt -.. + hitting enter -.. * =for= with a list -.. * =range= function - -============================= -Getting started with for loop -============================= - -{{{ show welcome slide }}} - -Hello and welcome to the tutorial getting started with ``for`` loop. - -{{{ switch to next slide, outline slide }}} - -In this tutorial we will learn about ``for`` loops in python, and also -learn how to write blocks of code in Python. - -.. #[Nishanth]: Instead of saying basics of indenting code, - say How to define code blocks in Python - -{{{ switch to next slide, about whitespaces }}} - -In Python whitespace is significant, and the blocks are visually -separated. - -.. #[nishanth]: Simply tell how blocks are defined in python. - The details like braces are not used and its - advantages like neat code can be told after completely - explaining the indentation - -.. #[Amit]: Do you want to do that here. May be its better to talk about - this after some initiation into the idea of blocks. - -The best practice is to indent the code using four spaces. - -.. #[Nishanth]: Even this detail may be skipped. Simply say use 4 spaces - for indentation. Do that while typing so that they can - actually see what is being typed. - -Now let us move straight into ``for`` loop. - -{{{ switch to next slide, problem statement of exercise 1 }}} - - -Write a for loop which iterates through a list of numbers and find the -square root of each number. -:: - - numbers are 1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916 - -.. #[nishanth]: making new list with square roots induces extra complication - like appending which has no use case here - -.. #[Nishanth]: The problem focuses more on square root and creation - of list. The problem must be simple and focusing on - nothing more but the indentation and for loop. - May be change the problem to print squares than to - print square roots. - -For the problem, first we need to create a ``list`` of numbers and -then iterate over the list and find the square root of each element in -it. And let us create a script, rather than typing it out in the -interpreter itself. Create a script called list_roots.py and type the -following. - -{{{ open the text editor and paste the following code there }}} -:: - - numbers = [1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916] - for each in numbers: - print "Square root of", each, "is", sqrt(each) - print "This is not in for loop!" - -.. numbers = [1, 12, 3, 4, 21, 17] - for each in numbers: - print each, each * each - -.. #[nishanth]: I don't see a use case to append the sq_root to - square_roots. It is only complicating stuff. - Simply iterate and print. - -{{{ save the script }}} - -Now save the script, and run it from your IPython interpreter. I -assume that you have started your IPython interpreter using ``-pylab`` -option. - -Run the script as, -:: - - %run -i list_roots.py - -.. #[Nishanth]: you don't have to use the -i option here - -{{{ run the script }}} - -So that was easy! All what we did was iterate over the list element by -element and then use the element for calculation. Note that here we -used two variables. One the variable ``numbers``, which is a list, -another one ``each``, which is the element of list under consideration -in each cycle of the ``for`` loop. The variable names can be chosen by -you. - -.. #[Nishanth]: The details like we didn't have to find the length - are relevant for people who have programmed in C or - other languages earlier. But for a newbie it is more - of confusing extra info. That part may be skipped. - Simply go ahead and focus on the syntax of for loop. - And how the variable name is used inside the for loop. - If you modify the question to only print, the extra - variable sq_root can also be avoided. let it be more - about "each", "numbers" and "for". no other new names. - -{{{ show the script which was created }}} - -Note that the lines after ``for`` statement, is indented using four -spaces. - -{{{ highlight the line after for statement }}} - -It means that line is part of the for loop. And it is a block of code, -although it is only a single statement in the block. And the fourth -line or the immediate line after the ``for`` block is not indented, - -{{{ highlight the fourth line - the line just after for loop }}} - -it means that it is not part of the ``for`` loop and the lines after -that doesn't fall in the scope of the ``for`` loop. Thus each block is -separated by the indentation level. Thus marking the importance of -white-spaces in Python. - -{{{ switch to the slide which shows the problem statement of the first -problem to be tried out }}} - -Now a question for you to try, from the given numbers make a list of -perfect squares and a list of those which are not. The numbers are, -:: - - 7225, 3268, 3364, 2966, 7056, 5625, 729, 5547, 7056, 576, 2916 - -{{{ switch to next slide, problem statement of second problem in -solved exercise}}} - -Now let us try a simple one, to print the square root of numbers in -the list. And this time let us do it right in the IPython -interpreter. - -{{{ switch focus to the IPython interpreter }}} - -So let us start with making a list. Type the following -:: - - numbers = [1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916] - for each in numbers: - -and now you will notice that, as soon as you press the return key -after for statement, the prompt changes to four dots and the cursor is -not right after the four dots but there are four spaces from the -dots. Please note that IPython automatically indents the block. The -four dots tell you that you are inside a block. Now type the rest of -the ``for`` loop, - -.. #[Nishanth]: Tell that IPython does auto indentation. - -:: - - print "Square root of", each, "is", sqrt(each) - -Now we have finished the statements in the block, and still the -interpreter is showing four dots, which means you are still inside the -block. To exit from the block press return key or the enter key twice -without entering anything else. It printed the square root of each -number in the list, and that is executed in a ``for`` loop. - -Now, let us find the cube of all the numbers from one to ten. But this -time let us try it in the vanilla version of Python interpreter. - -Start the vanilla version of Python interpreter by issuing the command -``python`` in your terminal. - -{{{ open the python interpreter in the terminal using the command -python to start the vanilla Python interpreter }}} - -Start with, -:: - - for i in range(1,11): - -and press enter once, and we will see that this time it shows four -dots, but the cursor is close to the dots, so we have to indent the -block. The vanilla version of Python interpreter does not indent the -code automatically. So enter four spaces there and then type the -following -:: - - print i, "cube is", i**3 - -Now when we hit enter, we still see the four dots, to get out of the -block, hit enter once again - -.. #[Nishanth]: Here also the overhead on print can be reduced. - Think of a simple print statement. This statement - will be confusing for a newbie. - We can focus more on indentation in python. - -.. #[nishanth]: Not sure if you must use range here. You can - define a list of numbers and iterate on it. - Then say this list can also be generated using - the range function and hence introduce range. - -Okay! so the main thing here we learned is how to use Python -interpreter and IPython interpreter to specify blocks. But while we -were generating the multiplication table we used something new, -``range()`` function. ``range()`` is an inbuilt function in Python -which can be used to generate a ``list`` of integers from a starting -number to an ending number. Note that the ending number that you -specify will not be included in the ``list``. - -.. #[Nishanth]: Show some examples of range without the step argument - May be give an exercise with negative numbers as arguments - -Now, let us print all the odd numbers from 1 to 50. Let us do it in -our IPython interpreter for ease of use. - -{{{ switch to next slide, problem statement of the next problem in -solved exercises }}} - -{{{ switch focus to ipython interpreter }}} - -The problem can be solved by just using the ``range()`` function. - -It can be solved as, -:: - - print range(1,51,2) - -This time we passed three parameters to ``range()`` function unlike -the previous case where we passed only two parameters. The first two -parameters are the same in both the cases. The first parameter is the -starting number of the sequence and the second parameter is the end of -the range. Note that the sequence doesn't include the ending -number. The third parameter is for stepping through the sequence. Here -we gave two which means we are skipping every alternate element. - -{{{ switch to next slide, recap slide }}} - -Thus we come to the end of this tutorial. We learned about blocks in -Python, indentation, blocks in IPython, for loop, iterating over a -list and then the ``range()`` function. - -.. #[Amit]: There does seem to too much overhead of details. Should - the first example be done using script is it necessary. - Do add some things in evolutionary manner. Like introducing - range as a list and doing a very very simple for loop.Like - iterating over [1,2,3] .Before getting into a problem. - And club details about problem in one paragraph and syntactic details - in other. - -{{{ switch to next slide, thank you slide }}} - -Thank you! - -.. Author: Anoop Jacob Thomas - Reviewer 1: Nishanth - Reviewer 2: Amit Sethi - External reviewer: diff -r 2ed3c5a3f856 -r 25b4e962b55e other_type_of_plots.rst --- a/other_type_of_plots.rst Sat Oct 09 02:59:42 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -.. 2.4 LO: other types of plots (3) [anoop] -.. ----------------------------------------- -.. * scatter -.. * pie chart -.. * bar chart -.. * log -.. * illustration of other plots, matplotlib help - -=================== -Other type of plots -=================== - -{{{ show the first slide }}} - -Hello and welcome to the tutorial other type of plots. - -{{{ show the outline slide }}} - -In this tutorial we will cover scatter plot, pie chart, bar chart and -log plot. We will also see few other plots and also introduce you to -the matplotlib help. - - -Let us start with scatter plot. - -{{{ switch to the next slide }}} - -In a scatter plot, the data is displayed as a collection of points, -each having the value of one variable determining the position on the -horizontal axis and the value of the other variable determining the -position on the vertical axis. This kind of plot is also called a -scatter chart, scatter diagram and scatter graph. - -Before we proceed further get your IPython interpreter running with -the ``-pylab`` option. Start your IPython interpreter as -:: - - ipython -pylab - -{{{ open the ipython interpreter in the terminal using the command -ipython -pylab }}} - -{{{ switch to the next slide having the problem statement of first -exercise }}} - -Now, let us plot a scatter plot showing the percentage profit of company A -from the year 2000-2010. The data for the same is available in the -file ``company-a-data.txt``. - -{{{ open the file company-a-data.txt and show the content }}} - -The data file has two lines with a set of values in each line, the -first line representing years and the second line representing the -profit percentages. - -{{{ close the file and switch to the terminal }}} - -To product the scatter plot first we need to load the data from the -file using ``loadtxt``. We learned in one of the previous sessions, -and it can be done as :: - - year,profit = loadtxt('/home/fossee/other-plot/company-a-data.txt',dtype=type(int())) - -Now in-order to generate the scatter graph we will use the function -``scatter()`` -:: - - scatter(year,profit) - -Notice that we passed two arguments to ``scatter()`` function, first -one the values in x-coordinate, year, and the other the values in -y-coordinate, the profit percentage. - -{{{ switch to the next slide which has the problem statement of -problem to be tried out }}} - -Now here is a question for you to try out, plot the same data with red -diamonds. - -**Clue** - *try scatter? in your ipython interpreter* - -.. scatter(year,profit,color='r',marker='d') - -Now let us move on to pie chart. - -{{{ switch to the slide which says about pie chart }}} - -A pie chart or a circle graph is a circular chart divided into -sectors, illustrating proportion. - -{{{ switch to the slide showing the problem statement of second -exercise question }}} - -Plot a pie chart representing the profit percentage of company A, with -the same data from file ``company-a-data.txt``. So let us reuse the -data we have loaded from the file previously. - -We can plot the pie chart using the function ``pie()``. -:: - - pie(profit,labels=year) - -Notice that we passed two arguments to the function ``pie()``. The -first one the values and the next one the set of labels to be used in -the pie chart. - -{{{ switch to the next slide which has the problem statement of -problem to be tried out }}} - -Now here is a question for you to try out, plot a pie chart with the -same data with colors for each wedges as white, red, black, magenta, -yellow, blue, green, cyan, yellow, magenta and blue respectively. - -**Clue** - *try pie? in your ipython interpreter* - -.. pie(t,labels=s,colors=('w','r','k','m','y','b','g','c','y','m','b')) - -{{{ switch to the slide which says about bar chart }}} - -Now let us move on to bar chart. A bar chart or bar graph is a chart -with rectangular bars with lengths proportional to the values that -they represent. - -{{{ switch to the slide showing the problem statement of third -exercise question }}} - -Plot a bar chart representing the profit percentage of company A, with -the same data from file ``company-a-data.txt``. - -So let us reuse the data we have loaded from the file previously. - -We can plot the bar chart using the function ``bar()``. -:: - - bar(year,profit) - -Note that the function ``bar()`` needs at least two arguments one the -values in x-coordinate and the other values in y-coordinate which is -used to determine the height of the bars. - -{{{ switch to the next slide which has the problem statement of -problem to be tried out }}} - -Now here is a question for you to try, plot a bar chart which is not -filled and which is hatched with 45\ :sup:`o` slanting lines as shown -in the image in the slide. - -**Clue** - *try bar? in your ipython interpreter* - -.. bar(year,profit,fill=False,hatch='/') - -{{{ switch to the slide which says about bar chart }}} - -Now let us move on to log-log plot. A log-log graph or log-log plot is -a two-dimensional graph of numerical data that uses logarithmic scales -on both the horizontal and vertical axes. Because of the nonlinear -scaling of the axes, a function of the form y = ax\ :sup:`b` will -appear as a straight line on a log-log graph - -{{{ switch to the slide showing the problem statement of fourth -exercise question }}} - - -Plot a `log-log` chart of y=5*x\ :sup:`3` for x from 1-20. - -Before we actually plot let us calculate the points needed for -that. And it could be done as, -:: - - x = linspace(1,20,100) - y = 5*x**3 - -Now we can plot the log-log chart using ``loglog()`` function, -:: - - loglog(x,y) - -To understand the difference between a normal ``plot`` and a ``log-log -plot`` let us create another plot using the function ``plot``. -:: - - figure(2) - plot(x,y) - -{{{ show both the plots side by side }}} - -So that was ``log-log() plot``. - -{{{ switch to the next slide which says: "How to get help on -matplotlib online"}}} - -Now we will see few more plots and also see how to access help of -matplotlib over the internet. - -Help about matplotlib can be obtained from -matplotlib.sourceforge.net/contents.html - -.. #[[Anoop: I am not so sure how to do the rest of it, so I guess we - can just browse through the side and tell them few. What is your - opinion??]] - -Now let us see few plots from -matplotlib.sourceforge.net/users/screenshots.html - -{{{ browse through the site quickly }}} - -{{{ switch to recap slide }}} - -Now we have come to the end of this tutorial. We have covered scatter -plot, pie chart, bar chart, log-log plot and also saw few other plots -and covered how to access the matplotlib online help. - -{{{ switch to the thank you slide }}} - -Thank you! - -.. Author: Anoop Jacob Thomas - Reviewer 1: - Reviewer 2: - External reviewer: diff -r 2ed3c5a3f856 -r 25b4e962b55e savefig.rst --- a/savefig.rst Sat Oct 09 02:59:42 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -======= -Savefig -======= - -Hello and welcome to the tutorial. In this tutorial you will learn how -to save plots using Python. - -Start your IPython interpreter with the command :: - - ipython -pylab - -It will start your IPython interpreter with the required python -modules for plotting and saving your plots. - -{{{ Open ipython }}} - -Now let us plot something, let us plot a sine wave from minus 3 pi to -3 pi. Let us start by calculating the required points for the plot. It -can be done using linspace as, :: - - x = linspace(-3*pi,3*pi,100) - -We have stored required points in x. Now let us plot the points using -the statement :: - - plot(x,sin(x)) - -{{{ Keep the plot open }}} - -Done! we have made a very basic sine plot, now let us see how to save -the plot for future use so that you can embed the plot in your -reports. - -{{{ Switch the focus to IPython interpreter window }}} - -For saving the plot, we will use savefig function, and it has to be -done with the plot window open. The statement is, :: - - savefig('/home/fossee/sine.png') - -Notice that ``savefig`` function takes one argument which is a string -which is the filename. The last 3 characters after the ``.`` in the -filename is the extension or type of the file which determines the -format in which you want to save. - -{{{ Highlight the /home/fossee part using mouse movements }}} - -Also, note that we gave the full path or the absolute path to which we -want to save the file. - -{{{ Highlight the .png part using mouse movements }}} - -Here I have used an extension ``.png`` which means i want to save the -image as a PNG file. - -Now let us locate ``sine.png`` file saved. We saved the file to -``/home/fossee`` so let us navigate to ``/home/fossee`` using the -file browser. - -{{{ Open the browser, navigate to /home/fossee and highlight the file -sine.png }}} - -Yes, the file ``sine.png`` is here and let us check the it. - -{{{ Open the file sine.png and show it for two-three seconds and then -close it and return to IPython interpreter, make sure the plot window -is still open, also don't close the file browser window }}} - -So in-order to save a plot, we use ``savefig`` function. ``savefig`` -can save the plot in many formats, such as pdf - portable document -format, ps - post script, eps - encapsulated post script, svg - -scalable vector graphics, png - portable network graphics which -support transparency etc. - -#[slide must give the extensions for the files - Anoop] - -Let us now try to save the plot in eps format. ``eps`` stands for -encapsulated post script, and it can be embedded in your latex -documents. - -{{{ Switch focus to the already open plot window }}} - -We still have the old sine plot with us, and now let us save the plot -as ``sine.eps``. - -{{{ Switch focus to IPython interpreter }}} - -Now, We will save the plot using the function ``savefig`` :: - - savefig('/home/fossee/sine.eps') - -{{{ Switch focus to file browser window }}} - -Now let us go to ``/home/fossee`` and see the new file created. - -{{{ Highlight the file sine.eps with a single mouse click for 2 -seconds and then double click and open the file }}} - -Yes! the new file ``sine.eps`` is here. - -Now you may try saving the same in pdf, ps, svg formats. - -Let us review what we have learned in this session! We have learned to -save plots in different formats using the function ``savefig()``. - -Thank you! - -.. Author: Anoop Jacob Thomas - Reviewer 1: - Reviewer 2: - External reviewer: