##// END OF EJS Templates
lower case names for keys
Paul Ivanov -
Show More
@@ -1,133 +1,133 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2008-2011 The IPython Development Team
2 // Copyright (C) 2008-2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // QuickHelp button
9 // QuickHelp button
10 //============================================================================
10 //============================================================================
11
11
12 var IPython = (function (IPython) {
12 var IPython = (function (IPython) {
13 "use strict";
13 "use strict";
14
14
15 var QuickHelp = function (selector) {
15 var QuickHelp = function (selector) {
16 };
16 };
17
17
18 QuickHelp.prototype.show_keyboard_shortcuts = function () {
18 QuickHelp.prototype.show_keyboard_shortcuts = function () {
19 // toggles display of keyboard shortcut dialog
19 // toggles display of keyboard shortcut dialog
20 var that = this;
20 var that = this;
21 if ( this.shortcut_dialog ){
21 if ( this.shortcut_dialog ){
22 // if dialog is already shown, close it
22 // if dialog is already shown, close it
23 $(this.shortcut_dialog).modal("toggle");
23 $(this.shortcut_dialog).modal("toggle");
24 return;
24 return;
25 }
25 }
26 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
26 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
27 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
27 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
28 var help, shortcut;
28 var help, shortcut;
29 var i, half, n;
29 var i, half, n;
30 var element = $('<div/>');
30 var element = $('<div/>');
31
31
32 // The documentation
32 // The documentation
33 var doc = $('<div/>').addClass('alert');
33 var doc = $('<div/>').addClass('alert');
34 doc.append(
34 doc.append(
35 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
35 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
36 ).append(
36 ).append(
37 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
37 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
38 'allows you to type code/text into a cell and is indicated by a green cell '+
38 'allows you to type code/text into a cell and is indicated by a green cell '+
39 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
39 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
40 'and is indicated by a grey cell border.'
40 'and is indicated by a grey cell border.'
41 )
41 )
42 element.append(doc);
42 element.append(doc);
43
43
44 // Command mode
44 // Command mode
45 var cmd_div = this.build_command_help();
45 var cmd_div = this.build_command_help();
46 element.append(cmd_div);
46 element.append(cmd_div);
47
47
48 // Edit mode
48 // Edit mode
49 var edit_div = this.build_edit_help();
49 var edit_div = this.build_edit_help();
50 element.append(edit_div);
50 element.append(edit_div);
51
51
52 this.shortcut_dialog = IPython.dialog.modal({
52 this.shortcut_dialog = IPython.dialog.modal({
53 title : "Keyboard shortcuts",
53 title : "Keyboard shortcuts",
54 body : element,
54 body : element,
55 destroy : false,
55 destroy : false,
56 buttons : {
56 buttons : {
57 Close : {}
57 Close : {}
58 }
58 }
59 });
59 });
60 };
60 };
61
61
62 QuickHelp.prototype.build_command_help = function () {
62 QuickHelp.prototype.build_command_help = function () {
63 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
63 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
64 var help, shortcut;
64 var help, shortcut;
65 var i, half, n;
65 var i, half, n;
66
66
67 // Command mode
67 // Command mode
68 var cmd_div = $('<div/>').append($('<h4>Command Mode (press ESC to enable)</h4>'));
68 var cmd_div = $('<div/>').append($('<h4>Command Mode (press <tt>esc</tt> to enable)</h4>'));
69 var cmd_sub_div = $('<div/>').addClass('hbox');
69 var cmd_sub_div = $('<div/>').addClass('hbox');
70 var cmd_col1 = $('<div/>').addClass('box-flex0');
70 var cmd_col1 = $('<div/>').addClass('box-flex0');
71 var cmd_col2 = $('<div/>').addClass('box-flex0');
71 var cmd_col2 = $('<div/>').addClass('box-flex0');
72 n = command_shortcuts.length;
72 n = command_shortcuts.length;
73 half = ~~(n/2); // Truncate :)
73 half = ~~(n/2); // Truncate :)
74 for (i=0; i<half; i++) {
74 for (i=0; i<half; i++) {
75 help = command_shortcuts[i]['help'];
75 help = command_shortcuts[i]['help'];
76 shortcut = command_shortcuts[i]['shortcut'];
76 shortcut = command_shortcuts[i]['shortcut'];
77 cmd_col1.append($('<div>').addClass('quickhelp').
77 cmd_col1.append($('<div>').addClass('quickhelp').
78 append($('<span/>').addClass('shortcut_key').text(shortcut)).
78 append($('<span/>').addClass('shortcut_key').text(shortcut)).
79 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
79 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
80 );
80 );
81 };
81 };
82 for (i=half; i<n; i++) {
82 for (i=half; i<n; i++) {
83 help = command_shortcuts[i]['help'];
83 help = command_shortcuts[i]['help'];
84 shortcut = command_shortcuts[i]['shortcut'];
84 shortcut = command_shortcuts[i]['shortcut'];
85 cmd_col2.append($('<div>').addClass('quickhelp').
85 cmd_col2.append($('<div>').addClass('quickhelp').
86 append($('<span/>').addClass('shortcut_key').text(shortcut)).
86 append($('<span/>').addClass('shortcut_key').text(shortcut)).
87 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
87 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
88 );
88 );
89 };
89 };
90 cmd_sub_div.append(cmd_col1).append(cmd_col2);
90 cmd_sub_div.append(cmd_col1).append(cmd_col2);
91 cmd_div.append(cmd_sub_div);
91 cmd_div.append(cmd_sub_div);
92 return cmd_div;
92 return cmd_div;
93 }
93 }
94
94
95 QuickHelp.prototype.build_edit_help = function () {
95 QuickHelp.prototype.build_edit_help = function () {
96 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
96 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
97 var help, shortcut;
97 var help, shortcut;
98 var i, half, n;
98 var i, half, n;
99
99
100 // Edit mode
100 // Edit mode
101 var edit_div = $('<div/>').append($('<h4>Edit Mode (press ENTER to enable)</h4>'));
101 var edit_div = $('<div/>').append($('<h4>Edit Mode (press <tt>enter</tt> to enable)</h4>'));
102 var edit_sub_div = $('<div/>').addClass('hbox');
102 var edit_sub_div = $('<div/>').addClass('hbox');
103 var edit_col1 = $('<div/>').addClass('box-flex0');
103 var edit_col1 = $('<div/>').addClass('box-flex0');
104 var edit_col2 = $('<div/>').addClass('box-flex0');
104 var edit_col2 = $('<div/>').addClass('box-flex0');
105 n = edit_shortcuts.length;
105 n = edit_shortcuts.length;
106 half = ~~(n/2); // Truncate :)
106 half = ~~(n/2); // Truncate :)
107 for (i=0; i<half; i++) {
107 for (i=0; i<half; i++) {
108 help = edit_shortcuts[i]['help'];
108 help = edit_shortcuts[i]['help'];
109 shortcut = edit_shortcuts[i]['shortcut'];
109 shortcut = edit_shortcuts[i]['shortcut'];
110 edit_col1.append($('<div>').addClass('quickhelp').
110 edit_col1.append($('<div>').addClass('quickhelp').
111 append($('<span/>').addClass('shortcut_key').text(shortcut)).
111 append($('<span/>').addClass('shortcut_key').text(shortcut)).
112 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
112 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
113 );
113 );
114 };
114 };
115 for (i=half; i<n; i++) {
115 for (i=half; i<n; i++) {
116 help = edit_shortcuts[i]['help'];
116 help = edit_shortcuts[i]['help'];
117 shortcut = edit_shortcuts[i]['shortcut'];
117 shortcut = edit_shortcuts[i]['shortcut'];
118 edit_col2.append($('<div>').addClass('quickhelp').
118 edit_col2.append($('<div>').addClass('quickhelp').
119 append($('<span/>').addClass('shortcut_key').text(shortcut)).
119 append($('<span/>').addClass('shortcut_key').text(shortcut)).
120 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
120 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
121 );
121 );
122 };
122 };
123 edit_sub_div.append(edit_col1).append(edit_col2);
123 edit_sub_div.append(edit_col1).append(edit_col2);
124 edit_div.append(edit_sub_div);
124 edit_div.append(edit_sub_div);
125 return edit_div;
125 return edit_div;
126 }
126 }
127
127
128 // Set module variables
128 // Set module variables
129 IPython.QuickHelp = QuickHelp;
129 IPython.QuickHelp = QuickHelp;
130
130
131 return IPython;
131 return IPython;
132
132
133 }(IPython));
133 }(IPython));
@@ -1,175 +1,175 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2011 The IPython Development Team
2 // Copyright (C) 2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Tour of IPython Notebok UI (with Bootstrap Tour)
9 // Tour of IPython Notebok UI (with Bootstrap Tour)
10 //============================================================================
10 //============================================================================
11
11
12 var tour_steps = [
12 var tour_steps = [
13 {
13 {
14 element: $("#ipython_notebook"),
14 element: $("#ipython_notebook"),
15 title: "Welcome to the Notebook Tour",
15 title: "Welcome to the Notebook Tour",
16 placement: 'bottom',
16 placement: 'bottom',
17 content: "This tour will take 2 minutes.",
17 content: "This tour will take 2 minutes.",
18 backdrop: true,
18 backdrop: true,
19 }, {
19 }, {
20 element: "#notebook_name",
20 element: "#notebook_name",
21 title: "Filename",
21 title: "Filename",
22 placement: 'bottom',
22 placement: 'bottom',
23 content: "Click here to change the filename for this notebook."
23 content: "Click here to change the filename for this notebook."
24 }, {
24 }, {
25 element: "#checkpoint_status",
25 element: "#checkpoint_status",
26 title: "Checkpoint Status",
26 title: "Checkpoint Status",
27 placement: 'bottom',
27 placement: 'bottom',
28 content: "Information about the last time this notebook was saved."
28 content: "Information about the last time this notebook was saved."
29 }, {
29 }, {
30 element: $("#menus").parent(),
30 element: $("#menus").parent(),
31 placement: 'bottom',
31 placement: 'bottom',
32 backdrop: true,
32 backdrop: true,
33 title: "Notebook Menubar",
33 title: "Notebook Menubar",
34 content: "The menubar has menus for actions on the notebook, its cells, and the kernel it communicates with."
34 content: "The menubar has menus for actions on the notebook, its cells, and the kernel it communicates with."
35 }, {
35 }, {
36 element: "#maintoolbar",
36 element: "#maintoolbar",
37 placement: 'bottom',
37 placement: 'bottom',
38 backdrop: true,
38 backdrop: true,
39 title: "Notebook Toolbar",
39 title: "Notebook Toolbar",
40 content: "The toolbar has buttons for the most common actions. Hover your mouse over each button for more information."
40 content: "The toolbar has buttons for the most common actions. Hover your mouse over each button for more information."
41 }, {
41 }, {
42 element: "#modal_indicator",
42 element: "#modal_indicator",
43 title: "Mode Indicator",
43 title: "Mode Indicator",
44 placement: 'bottom',
44 placement: 'bottom',
45 content: "IPython has two modes: Edit Mode and Command Mode. In this area, an indicator can appear to tell you which mode you are in.",
45 content: "IPython has two modes: Edit Mode and Command Mode. In this area, an indicator can appear to tell you which mode you are in.",
46 onShow: function(tour) { command_icon_hack(); }
46 onShow: function(tour) { command_icon_hack(); }
47 }, {
47 }, {
48 element: "#modal_indicator",
48 element: "#modal_indicator",
49 title: "Command Mode",
49 title: "Command Mode",
50 placement: 'bottom',
50 placement: 'bottom',
51 onShow: function(tour) { IPython.notebook.command_mode(); command_icon_hack(); },
51 onShow: function(tour) { IPython.notebook.command_mode(); command_icon_hack(); },
52 onNext: function(tour) { edit_mode(); },
52 onNext: function(tour) { edit_mode(); },
53 content: "Right now you are in Command Mode, and many keyboard shortcuts are available. In this mode, no icon is displayed in the indicator area."
53 content: "Right now you are in Command Mode, and many keyboard shortcuts are available. In this mode, no icon is displayed in the indicator area."
54 }, {
54 }, {
55 element: "#modal_indicator",
55 element: "#modal_indicator",
56 title: "Edit Mode",
56 title: "Edit Mode",
57 placement: 'bottom',
57 placement: 'bottom',
58 onShow: function(tour) { edit_mode(); },
58 onShow: function(tour) { edit_mode(); },
59 content: "Pressing Enter or clicking in the input text area of the cell switches to Edit Mode."
59 content: "Pressing <tt>enter</tt> or clicking in the input text area of the cell switches to Edit Mode."
60 }, {
60 }, {
61 element: '.selected',
61 element: '.selected',
62 title: "Edit Mode",
62 title: "Edit Mode",
63 placement: 'bottom',
63 placement: 'bottom',
64 onShow: function(tour) { edit_mode(); },
64 onShow: function(tour) { edit_mode(); },
65 content: "Notice that the border around the currently active cell changed color. Typing will insert text into the currently active cell."
65 content: "Notice that the border around the currently active cell changed color. Typing will insert text into the currently active cell."
66 }, {
66 }, {
67 element: '.selected',
67 element: '.selected',
68 title: "Back to Command Mode",
68 title: "Back to Command Mode",
69 placement: 'bottom',
69 placement: 'bottom',
70 onShow: function(tour) { IPython.notebook.command_mode(); },
70 onShow: function(tour) { IPython.notebook.command_mode(); },
71 content: "Pressing Esc or clicking outside of the input text area takes you back to Command Mode."
71 content: "Pressing <tt>esc</tt> or clicking outside of the input text area takes you back to Command Mode."
72 }, {
72 }, {
73 element: '#keyboard_shortcuts',
73 element: '#keyboard_shortcuts',
74 title: "Keyboard Shortcuts",
74 title: "Keyboard Shortcuts",
75 placement: 'bottom',
75 placement: 'bottom',
76 onShow: function(tour) { $('#help_menu').parent().addClass('open'); },
76 onShow: function(tour) { $('#help_menu').parent().addClass('open'); },
77 onHide: function(tour) { $('#help_menu').parent().removeClass('open'); },
77 onHide: function(tour) { $('#help_menu').parent().removeClass('open'); },
78 content: "You can click here to get a list of all of the keyboard shortcuts."
78 content: "You can click here to get a list of all of the keyboard shortcuts."
79 }, {
79 }, {
80 element: "#kernel_indicator",
80 element: "#kernel_indicator",
81 title: "Kernel Indicator",
81 title: "Kernel Indicator",
82 placement: 'bottom',
82 placement: 'bottom',
83 onShow: function(tour) { $([IPython.events]).trigger('status_idle.Kernel');},
83 onShow: function(tour) { $([IPython.events]).trigger('status_idle.Kernel');},
84 content: "This is the Kernel indicator. It looks like this when the Kernel is idle.",
84 content: "This is the Kernel indicator. It looks like this when the Kernel is idle.",
85 }, {
85 }, {
86 element: "#kernel_indicator",
86 element: "#kernel_indicator",
87 title: "Kernel Indicator",
87 title: "Kernel Indicator",
88 placement: 'bottom',
88 placement: 'bottom',
89 onShow: function(tour) { $([IPython.events]).trigger('status_busy.Kernel'); },
89 onShow: function(tour) { $([IPython.events]).trigger('status_busy.Kernel'); },
90 content: "The Kernel indicator looks like this when the Kernel is busy.",
90 content: "The Kernel indicator looks like this when the Kernel is busy.",
91 }, {
91 }, {
92 element: ".icon-stop",
92 element: ".icon-stop",
93 placement: 'bottom',
93 placement: 'bottom',
94 title: "Interrupting the Kernel",
94 title: "Interrupting the Kernel",
95 onHide: function(tour) { $([IPython.events]).trigger('status_idle.Kernel'); },
95 onHide: function(tour) { $([IPython.events]).trigger('status_idle.Kernel'); },
96 content: "To cancel a computation in progress, you can click here."
96 content: "To cancel a computation in progress, you can click here."
97 }, {
97 }, {
98 element: "#notification_kernel",
98 element: "#notification_kernel",
99 placement: 'bottom',
99 placement: 'bottom',
100 onShow: function(tour) { $('.icon-stop').click(); },
100 onShow: function(tour) { $('.icon-stop').click(); },
101 title: "Notification Area",
101 title: "Notification Area",
102 content: "Messages in response to user actions (Save, Interrupt, etc) appear here."
102 content: "Messages in response to user actions (Save, Interrupt, etc) appear here."
103 }, {
103 }, {
104 element: "#ipython_notebook",
104 element: "#ipython_notebook",
105 title: "Fin.",
105 title: "Fin.",
106 placement: 'bottom',
106 placement: 'bottom',
107 backdrop: true,
107 backdrop: true,
108 content: "This concludes the IPython Notebook User Interface Tour. Happy hacking!",
108 content: "This concludes the IPython Notebook User Interface Tour. Happy hacking!",
109 }
109 }
110 ];
110 ];
111
111
112 var tour_style = "<div class='popover tour' style='position:relative'>\
112 var tour_style = "<div class='popover tour' style='position:relative'>\
113 <div class='arrow'></div>\
113 <div class='arrow'></div>\
114 <div style='position:absolute; top:7px; right:7px'>\
114 <div style='position:absolute; top:7px; right:7px'>\
115 <button class='btn btn-sm icon-remove' data-role='end'></button></div>\
115 <button class='btn btn-sm icon-remove' data-role='end'></button></div>\
116 <h3 class='popover-title'></h3>\
116 <h3 class='popover-title'></h3>\
117 <div class='popover-content'></div>\
117 <div class='popover-content'></div>\
118 <div class='popover-navigation'>\
118 <div class='popover-navigation'>\
119 <button class='btn btn-default icon-step-backward' data-role='prev'></button>\
119 <button class='btn btn-default icon-step-backward' data-role='prev'></button>\
120 <button class='btn btn-default icon-step-forward pull-right' data-role='next'></button>\
120 <button class='btn btn-default icon-step-forward pull-right' data-role='next'></button>\
121 <button id='tour-pause' class='btn btn-sm btn-default icon-pause' data-resume-text='' data-pause-text='' data-role='pause-resume'></button>\
121 <button id='tour-pause' class='btn btn-sm btn-default icon-pause' data-resume-text='' data-pause-text='' data-role='pause-resume'></button>\
122 </div>\
122 </div>\
123 </div>";
123 </div>";
124
124
125 var command_icon_hack = function() {$('#modal_indicator').css('min-height', 20);}
125 var command_icon_hack = function() {$('#modal_indicator').css('min-height', 20);}
126 var toggle_pause_play = function () { $('#tour-pause').toggleClass('icon-pause icon-play'); };
126 var toggle_pause_play = function () { $('#tour-pause').toggleClass('icon-pause icon-play'); };
127 var edit_mode = function() {
127 var edit_mode = function() {
128 IPython.notebook.focus_cell();
128 IPython.notebook.focus_cell();
129 IPython.notebook.edit_mode();
129 IPython.notebook.edit_mode();
130 ;}
130 ;}
131
131
132 IPython = (function (IPython) {
132 IPython = (function (IPython) {
133 "use strict";
133 "use strict";
134
134
135
135
136 var NotebookTour = function () {
136 var NotebookTour = function () {
137 this.step_duration = 0;
137 this.step_duration = 0;
138 this.tour_steps = tour_steps ;
138 this.tour_steps = tour_steps ;
139 this.tour_steps[0].content = "You can use the left and right arrow keys to go backwards and forwards.";
139 this.tour_steps[0].content = "You can use the left and right arrow keys to go backwards and forwards.";
140 this.tour = new Tour({
140 this.tour = new Tour({
141 //orphan: true,
141 //orphan: true,
142 storage: false, // start tour from beginning every time
142 storage: false, // start tour from beginning every time
143 //element: $("#ipython_notebook"),
143 //element: $("#ipython_notebook"),
144 debug: true,
144 debug: true,
145 reflex: true, // click on element to continue tour
145 reflex: true, // click on element to continue tour
146 //backdrop: true, // show dark behind popover
146 //backdrop: true, // show dark behind popover
147 animation: false,
147 animation: false,
148 duration: this.step_duration,
148 duration: this.step_duration,
149 onStart: function() { console.log('tour started'); },
149 onStart: function() { console.log('tour started'); },
150 // TODO: remove the onPause/onResume logic once pi's patch has been
150 // TODO: remove the onPause/onResume logic once pi's patch has been
151 // merged upstream to make this work via data-resume-class and
151 // merged upstream to make this work via data-resume-class and
152 // data-resume-text attributes.
152 // data-resume-text attributes.
153 onPause: toggle_pause_play,
153 onPause: toggle_pause_play,
154 onResume: toggle_pause_play,
154 onResume: toggle_pause_play,
155 steps: this.tour_steps,
155 steps: this.tour_steps,
156 template: tour_style
156 template: tour_style
157 });
157 });
158 this.tour.init();
158 this.tour.init();
159 };
159 };
160
160
161 NotebookTour.prototype.start = function () {
161 NotebookTour.prototype.start = function () {
162 console.log("let's start the tour");
162 console.log("let's start the tour");
163 this.tour.start();
163 this.tour.start();
164 if (this.tour.ended())
164 if (this.tour.ended())
165 {
165 {
166 this.tour.restart();
166 this.tour.restart();
167 }
167 }
168 };
168 };
169
169
170 // Set module variables
170 // Set module variables
171 IPython.NotebookTour = NotebookTour;
171 IPython.NotebookTour = NotebookTour;
172
172
173 return IPython;
173 return IPython;
174
174
175 }(IPython));
175 }(IPython));
@@ -1,472 +1,472 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": ""
3 "name": ""
4 },
4 },
5 "nbformat": 3,
5 "nbformat": 3,
6 "nbformat_minor": 0,
6 "nbformat_minor": 0,
7 "worksheets": [
7 "worksheets": [
8 {
8 {
9 "cells": [
9 "cells": [
10 {
10 {
11 "cell_type": "heading",
11 "cell_type": "heading",
12 "level": 1,
12 "level": 1,
13 "metadata": {},
13 "metadata": {},
14 "source": [
14 "source": [
15 "Running Code in the IPython Notebook"
15 "Running Code in the IPython Notebook"
16 ]
16 ]
17 },
17 },
18 {
18 {
19 "cell_type": "markdown",
19 "cell_type": "markdown",
20 "metadata": {},
20 "metadata": {},
21 "source": [
21 "source": [
22 "First and foremost, the IPython Notebook is an interactive environment for writing and running Python code."
22 "First and foremost, the IPython Notebook is an interactive environment for writing and running Python code."
23 ]
23 ]
24 },
24 },
25 {
25 {
26 "cell_type": "heading",
26 "cell_type": "heading",
27 "level": 2,
27 "level": 2,
28 "metadata": {},
28 "metadata": {},
29 "source": [
29 "source": [
30 "Code cells allow you to enter and run Python code"
30 "Code cells allow you to enter and run Python code"
31 ]
31 ]
32 },
32 },
33 {
33 {
34 "cell_type": "markdown",
34 "cell_type": "markdown",
35 "metadata": {},
35 "metadata": {},
36 "source": [
36 "source": [
37 "\n",
37 "\n",
38 "<script type=\"text/javascript\">\n",
38 "<script type=\"text/javascript\">\n",
39 "var _toggle=false;\n",
39 "var _toggle=false;\n",
40 "var hl = function (id, on){\n",
40 "var hl = function (id, on){\n",
41 " $(id)[0].style.background = '';\n",
41 " $(id)[0].style.background = '';\n",
42 " if (on) {\n",
42 " if (on) {\n",
43 " $(id)[0].style.background = 'lightcyan';\n",
43 " $(id)[0].style.background = 'lightcyan';\n",
44 " }\n",
44 " }\n",
45 "};\n",
45 "};\n",
46 "</script>\n",
46 "</script>\n",
47 "\n",
47 "\n",
48 "Run a code cell using `Shift-Enter` or pressing the <button><i class=\"icon-play\"></i></button> button in the <a href=\"#\" onMouseover=\"hl('#maintoolbar-container', 1)\" onMouseout=\"hl('#maintoolbar-container', 0)\">toolbar</a> above:"
48 "Run a code cell using `shift-enter` or pressing the <button><i class=\"icon-play\"></i></button> button in the <a href=\"#\" onMouseover=\"hl('#maintoolbar-container', 1)\" onMouseout=\"hl('#maintoolbar-container', 0)\">toolbar</a> above:"
49 ]
49 ]
50 },
50 },
51 {
51 {
52 "cell_type": "code",
52 "cell_type": "code",
53 "collapsed": false,
53 "collapsed": false,
54 "input": [
54 "input": [
55 "a = 10"
55 "a = 10"
56 ],
56 ],
57 "language": "python",
57 "language": "python",
58 "metadata": {},
58 "metadata": {},
59 "outputs": [],
59 "outputs": [],
60 "prompt_number": 10
60 "prompt_number": 10
61 },
61 },
62 {
62 {
63 "cell_type": "code",
63 "cell_type": "code",
64 "collapsed": false,
64 "collapsed": false,
65 "input": [
65 "input": [
66 "print(a)"
66 "print(a)"
67 ],
67 ],
68 "language": "python",
68 "language": "python",
69 "metadata": {},
69 "metadata": {},
70 "outputs": [
70 "outputs": [
71 {
71 {
72 "output_type": "stream",
72 "output_type": "stream",
73 "stream": "stdout",
73 "stream": "stdout",
74 "text": [
74 "text": [
75 "10\n"
75 "10\n"
76 ]
76 ]
77 }
77 }
78 ],
78 ],
79 "prompt_number": 11
79 "prompt_number": 11
80 },
80 },
81 {
81 {
82 "cell_type": "heading",
82 "cell_type": "heading",
83 "level": 2,
83 "level": 2,
84 "metadata": {},
84 "metadata": {},
85 "source": [
85 "source": [
86 "Managing the IPython Kernel"
86 "Managing the IPython Kernel"
87 ]
87 ]
88 },
88 },
89 {
89 {
90 "cell_type": "markdown",
90 "cell_type": "markdown",
91 "metadata": {},
91 "metadata": {},
92 "source": [
92 "source": [
93 "Code is run in a separate process called the IPython Kernel. The Kernel can be interrupted or restarted. Try running the following cell and then hit the <button><i class='icon-stop'></i></button> button in the <a href=\"#\" onMouseover=\"hl('#maintoolbar-container', 1)\" onMouseout=\"hl('#maintoolbar-container', 0)\">toolbar</a> above."
93 "Code is run in a separate process called the IPython Kernel. The Kernel can be interrupted or restarted. Try running the following cell and then hit the <button><i class='icon-stop'></i></button> button in the <a href=\"#\" onMouseover=\"hl('#maintoolbar-container', 1)\" onMouseout=\"hl('#maintoolbar-container', 0)\">toolbar</a> above."
94 ]
94 ]
95 },
95 },
96 {
96 {
97 "cell_type": "code",
97 "cell_type": "code",
98 "collapsed": false,
98 "collapsed": false,
99 "input": [
99 "input": [
100 "import time\n",
100 "import time\n",
101 "time.sleep(10)"
101 "time.sleep(10)"
102 ],
102 ],
103 "language": "python",
103 "language": "python",
104 "metadata": {},
104 "metadata": {},
105 "outputs": [
105 "outputs": [
106 {
106 {
107 "ename": "KeyboardInterrupt",
107 "ename": "KeyboardInterrupt",
108 "evalue": "",
108 "evalue": "",
109 "output_type": "pyerr",
109 "output_type": "pyerr",
110 "traceback": [
110 "traceback": [
111 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
111 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
112 "\u001b[0;32m<ipython-input-16-d7b436e260d5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
112 "\u001b[0;32m<ipython-input-16-d7b436e260d5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
113 "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
113 "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
114 ]
114 ]
115 }
115 }
116 ],
116 ],
117 "prompt_number": 16
117 "prompt_number": 16
118 },
118 },
119 {
119 {
120 "cell_type": "markdown",
120 "cell_type": "markdown",
121 "metadata": {},
121 "metadata": {},
122 "source": [
122 "source": [
123 "If the Kernel dies you will be prompted to restart it. Here we call the low-level system libc.time routine with the wrong argument via\n",
123 "If the Kernel dies you will be prompted to restart it. Here we call the low-level system libc.time routine with the wrong argument via\n",
124 "ctypes to segfault the Python interpreter:"
124 "ctypes to segfault the Python interpreter:"
125 ]
125 ]
126 },
126 },
127 {
127 {
128 "cell_type": "code",
128 "cell_type": "code",
129 "collapsed": false,
129 "collapsed": false,
130 "input": [
130 "input": [
131 "import sys\n",
131 "import sys\n",
132 "from ctypes import CDLL\n",
132 "from ctypes import CDLL\n",
133 "# This will crash a Linux or Mac system; equivalent calls can be made on Windows\n",
133 "# This will crash a Linux or Mac system; equivalent calls can be made on Windows\n",
134 "dll = 'dylib' if sys.platform == 'darwin' else 'so.6'\n",
134 "dll = 'dylib' if sys.platform == 'darwin' else 'so.6'\n",
135 "libc = CDLL(\"libc.%s\" % dll) \n",
135 "libc = CDLL(\"libc.%s\" % dll) \n",
136 "libc.time(-1) # BOOM!!"
136 "libc.time(-1) # BOOM!!"
137 ],
137 ],
138 "language": "python",
138 "language": "python",
139 "metadata": {},
139 "metadata": {},
140 "outputs": []
140 "outputs": []
141 },
141 },
142 {
142 {
143 "cell_type": "heading",
143 "cell_type": "heading",
144 "level": 2,
144 "level": 2,
145 "metadata": {},
145 "metadata": {},
146 "source": [
146 "source": [
147 "All of the goodness of IPython works"
147 "All of the goodness of IPython works"
148 ]
148 ]
149 },
149 },
150 {
150 {
151 "cell_type": "markdown",
151 "cell_type": "markdown",
152 "metadata": {},
152 "metadata": {},
153 "source": [
153 "source": [
154 "Here are two system aliases:"
154 "Here are two system aliases:"
155 ]
155 ]
156 },
156 },
157 {
157 {
158 "cell_type": "code",
158 "cell_type": "code",
159 "collapsed": false,
159 "collapsed": false,
160 "input": [
160 "input": [
161 "pwd"
161 "pwd"
162 ],
162 ],
163 "language": "python",
163 "language": "python",
164 "metadata": {},
164 "metadata": {},
165 "outputs": [
165 "outputs": [
166 {
166 {
167 "metadata": {},
167 "metadata": {},
168 "output_type": "pyout",
168 "output_type": "pyout",
169 "prompt_number": 4,
169 "prompt_number": 4,
170 "text": [
170 "text": [
171 "u'/Users/bgranger/Documents/Computation/IPython/code/ipython/examples/notebooks'"
171 "u'/Users/bgranger/Documents/Computation/IPython/code/ipython/examples/notebooks'"
172 ]
172 ]
173 }
173 }
174 ],
174 ],
175 "prompt_number": 4
175 "prompt_number": 4
176 },
176 },
177 {
177 {
178 "cell_type": "code",
178 "cell_type": "code",
179 "collapsed": false,
179 "collapsed": false,
180 "input": [
180 "input": [
181 "ls"
181 "ls"
182 ],
182 ],
183 "language": "python",
183 "language": "python",
184 "metadata": {},
184 "metadata": {},
185 "outputs": [
185 "outputs": [
186 {
186 {
187 "output_type": "stream",
187 "output_type": "stream",
188 "stream": "stdout",
188 "stream": "stdout",
189 "text": [
189 "text": [
190 "01_notebook_introduction.ipynb Octave Magic.ipynb\r\n",
190 "01_notebook_introduction.ipynb Octave Magic.ipynb\r\n",
191 "Animations Using clear_output.ipynb PyLab and Matplotlib.ipynb\r\n",
191 "Animations Using clear_output.ipynb PyLab and Matplotlib.ipynb\r\n",
192 "Basic Output.ipynb R Magics.ipynb\r\n",
192 "Basic Output.ipynb R Magics.ipynb\r\n",
193 "Custom Display Logic.ipynb Running Code.ipynb\r\n",
193 "Custom Display Logic.ipynb Running Code.ipynb\r\n",
194 "Cython Magics.ipynb Script Magics.ipynb\r\n",
194 "Cython Magics.ipynb Script Magics.ipynb\r\n",
195 "Data Publication API.ipynb SymPy Examples.ipynb\r\n",
195 "Data Publication API.ipynb SymPy Examples.ipynb\r\n",
196 "Display System.ipynb Trapezoid Rule.ipynb\r\n",
196 "Display System.ipynb Trapezoid Rule.ipynb\r\n",
197 "JS Progress Bar.ipynb Typesetting Math Using MathJax.ipynb\r\n",
197 "JS Progress Bar.ipynb Typesetting Math Using MathJax.ipynb\r\n",
198 "Local Files.ipynb animation.m4v\r\n",
198 "Local Files.ipynb animation.m4v\r\n",
199 "Markdown Cells.ipynb python-logo.svg\r\n",
199 "Markdown Cells.ipynb python-logo.svg\r\n",
200 "Notebook Tour.ipynb\r\n"
200 "Notebook Tour.ipynb\r\n"
201 ]
201 ]
202 }
202 }
203 ],
203 ],
204 "prompt_number": 2
204 "prompt_number": 2
205 },
205 },
206 {
206 {
207 "cell_type": "markdown",
207 "cell_type": "markdown",
208 "metadata": {},
208 "metadata": {},
209 "source": [
209 "source": [
210 "Any command line program can be run using `!` with string interpolation from Python variables:"
210 "Any command line program can be run using `!` with string interpolation from Python variables:"
211 ]
211 ]
212 },
212 },
213 {
213 {
214 "cell_type": "code",
214 "cell_type": "code",
215 "collapsed": false,
215 "collapsed": false,
216 "input": [
216 "input": [
217 "message = 'The IPython notebook is great!'\n",
217 "message = 'The IPython notebook is great!'\n",
218 "# note: the echo command does not run on Windows, it's a unix command.\n",
218 "# note: the echo command does not run on Windows, it's a unix command.\n",
219 "!echo $message"
219 "!echo $message"
220 ],
220 ],
221 "language": "python",
221 "language": "python",
222 "metadata": {},
222 "metadata": {},
223 "outputs": []
223 "outputs": []
224 },
224 },
225 {
225 {
226 "cell_type": "markdown",
226 "cell_type": "markdown",
227 "metadata": {},
227 "metadata": {},
228 "source": [
228 "source": [
229 "Tab completion works:"
229 "Tab completion works:"
230 ]
230 ]
231 },
231 },
232 {
232 {
233 "cell_type": "code",
233 "cell_type": "code",
234 "collapsed": false,
234 "collapsed": false,
235 "input": [
235 "input": [
236 "import numpy\n",
236 "import numpy\n",
237 "numpy.random."
237 "numpy.random."
238 ],
238 ],
239 "language": "python",
239 "language": "python",
240 "metadata": {},
240 "metadata": {},
241 "outputs": [],
241 "outputs": [],
242 "prompt_number": 9
242 "prompt_number": 9
243 },
243 },
244 {
244 {
245 "cell_type": "markdown",
245 "cell_type": "markdown",
246 "metadata": {},
246 "metadata": {},
247 "source": [
247 "source": [
248 "Shift-Tab on selection, or after `(` brings up a tooltip with the docstring:"
248 "Shift-Tab on selection, or after `(` brings up a tooltip with the docstring:"
249 ]
249 ]
250 },
250 },
251 {
251 {
252 "cell_type": "code",
252 "cell_type": "code",
253 "collapsed": false,
253 "collapsed": false,
254 "input": [
254 "input": [
255 "numpy.random.rand("
255 "numpy.random.rand("
256 ],
256 ],
257 "language": "python",
257 "language": "python",
258 "metadata": {},
258 "metadata": {},
259 "outputs": []
259 "outputs": []
260 },
260 },
261 {
261 {
262 "cell_type": "markdown",
262 "cell_type": "markdown",
263 "metadata": {},
263 "metadata": {},
264 "source": [
264 "source": [
265 "Adding `?` opens the docstring in the pager below:"
265 "Adding `?` opens the docstring in the pager below:"
266 ]
266 ]
267 },
267 },
268 {
268 {
269 "cell_type": "code",
269 "cell_type": "code",
270 "collapsed": false,
270 "collapsed": false,
271 "input": [
271 "input": [
272 "magic?"
272 "magic?"
273 ],
273 ],
274 "language": "python",
274 "language": "python",
275 "metadata": {},
275 "metadata": {},
276 "outputs": [],
276 "outputs": [],
277 "prompt_number": 8
277 "prompt_number": 8
278 },
278 },
279 {
279 {
280 "cell_type": "markdown",
280 "cell_type": "markdown",
281 "metadata": {},
281 "metadata": {},
282 "source": [
282 "source": [
283 "Exceptions are formatted nicely:"
283 "Exceptions are formatted nicely:"
284 ]
284 ]
285 },
285 },
286 {
286 {
287 "cell_type": "code",
287 "cell_type": "code",
288 "collapsed": false,
288 "collapsed": false,
289 "input": [
289 "input": [
290 "x = 1\n",
290 "x = 1\n",
291 "y = 4\n",
291 "y = 4\n",
292 "z = y/(1-x)"
292 "z = y/(1-x)"
293 ],
293 ],
294 "language": "python",
294 "language": "python",
295 "metadata": {},
295 "metadata": {},
296 "outputs": [
296 "outputs": [
297 {
297 {
298 "ename": "ZeroDivisionError",
298 "ename": "ZeroDivisionError",
299 "evalue": "integer division or modulo by zero",
299 "evalue": "integer division or modulo by zero",
300 "output_type": "pyerr",
300 "output_type": "pyerr",
301 "traceback": [
301 "traceback": [
302 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
302 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
303 "\u001b[0;32m<ipython-input-15-dc39888fd1d2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
303 "\u001b[0;32m<ipython-input-15-dc39888fd1d2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
304 "\u001b[0;31mZeroDivisionError\u001b[0m: integer division or modulo by zero"
304 "\u001b[0;31mZeroDivisionError\u001b[0m: integer division or modulo by zero"
305 ]
305 ]
306 }
306 }
307 ],
307 ],
308 "prompt_number": 15
308 "prompt_number": 15
309 },
309 },
310 {
310 {
311 "cell_type": "heading",
311 "cell_type": "heading",
312 "level": 2,
312 "level": 2,
313 "metadata": {},
313 "metadata": {},
314 "source": [
314 "source": [
315 "Working with external code"
315 "Working with external code"
316 ]
316 ]
317 },
317 },
318 {
318 {
319 "cell_type": "markdown",
319 "cell_type": "markdown",
320 "metadata": {},
320 "metadata": {},
321 "source": [
321 "source": [
322 "There are a number of ways of getting external code into code cells."
322 "There are a number of ways of getting external code into code cells."
323 ]
323 ]
324 },
324 },
325 {
325 {
326 "cell_type": "markdown",
326 "cell_type": "markdown",
327 "metadata": {},
327 "metadata": {},
328 "source": [
328 "source": [
329 "Pasting code with `>>>` prompts works as expected:"
329 "Pasting code with `>>>` prompts works as expected:"
330 ]
330 ]
331 },
331 },
332 {
332 {
333 "cell_type": "code",
333 "cell_type": "code",
334 "collapsed": false,
334 "collapsed": false,
335 "input": [
335 "input": [
336 ">>> the_world_is_flat = 1\n",
336 ">>> the_world_is_flat = 1\n",
337 ">>> if the_world_is_flat:\n",
337 ">>> if the_world_is_flat:\n",
338 "... print(\"Be careful not to fall off!\")"
338 "... print(\"Be careful not to fall off!\")"
339 ],
339 ],
340 "language": "python",
340 "language": "python",
341 "metadata": {},
341 "metadata": {},
342 "outputs": [
342 "outputs": [
343 {
343 {
344 "output_type": "stream",
344 "output_type": "stream",
345 "stream": "stdout",
345 "stream": "stdout",
346 "text": [
346 "text": [
347 "Be careful not to fall off!\n"
347 "Be careful not to fall off!\n"
348 ]
348 ]
349 }
349 }
350 ],
350 ],
351 "prompt_number": 1
351 "prompt_number": 1
352 },
352 },
353 {
353 {
354 "cell_type": "markdown",
354 "cell_type": "markdown",
355 "metadata": {},
355 "metadata": {},
356 "source": [
356 "source": [
357 "The `%load` magic lets you load code from URLs or local files:"
357 "The `%load` magic lets you load code from URLs or local files:"
358 ]
358 ]
359 },
359 },
360 {
360 {
361 "cell_type": "code",
361 "cell_type": "code",
362 "collapsed": false,
362 "collapsed": false,
363 "input": [
363 "input": [
364 "%load?"
364 "%load?"
365 ],
365 ],
366 "language": "python",
366 "language": "python",
367 "metadata": {},
367 "metadata": {},
368 "outputs": [],
368 "outputs": [],
369 "prompt_number": 14
369 "prompt_number": 14
370 },
370 },
371 {
371 {
372 "cell_type": "code",
372 "cell_type": "code",
373 "collapsed": false,
373 "collapsed": false,
374 "input": [
374 "input": [
375 "%matplotlib inline"
375 "%matplotlib inline"
376 ],
376 ],
377 "language": "python",
377 "language": "python",
378 "metadata": {},
378 "metadata": {},
379 "outputs": [],
379 "outputs": [],
380 "prompt_number": 1
380 "prompt_number": 1
381 },
381 },
382 {
382 {
383 "cell_type": "code",
383 "cell_type": "code",
384 "collapsed": false,
384 "collapsed": false,
385 "input": [
385 "input": [
386 "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py"
386 "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py"
387 ],
387 ],
388 "language": "python",
388 "language": "python",
389 "metadata": {},
389 "metadata": {},
390 "outputs": [],
390 "outputs": [],
391 "prompt_number": 2
391 "prompt_number": 2
392 },
392 },
393 {
393 {
394 "cell_type": "code",
394 "cell_type": "code",
395 "collapsed": false,
395 "collapsed": false,
396 "input": [
396 "input": [
397 "\"\"\"\n",
397 "\"\"\"\n",
398 "Plot demonstrating the integral as the area under a curve.\n",
398 "Plot demonstrating the integral as the area under a curve.\n",
399 "\n",
399 "\n",
400 "Although this is a simple example, it demonstrates some important tweaks:\n",
400 "Although this is a simple example, it demonstrates some important tweaks:\n",
401 "\n",
401 "\n",
402 " * A simple line plot with custom color and line width.\n",
402 " * A simple line plot with custom color and line width.\n",
403 " * A shaded region created using a Polygon patch.\n",
403 " * A shaded region created using a Polygon patch.\n",
404 " * A text label with mathtext rendering.\n",
404 " * A text label with mathtext rendering.\n",
405 " * figtext calls to label the x- and y-axes.\n",
405 " * figtext calls to label the x- and y-axes.\n",
406 " * Use of axis spines to hide the top and right spines.\n",
406 " * Use of axis spines to hide the top and right spines.\n",
407 " * Custom tick placement and labels.\n",
407 " * Custom tick placement and labels.\n",
408 "\"\"\"\n",
408 "\"\"\"\n",
409 "import numpy as np\n",
409 "import numpy as np\n",
410 "import matplotlib.pyplot as plt\n",
410 "import matplotlib.pyplot as plt\n",
411 "from matplotlib.patches import Polygon\n",
411 "from matplotlib.patches import Polygon\n",
412 "\n",
412 "\n",
413 "\n",
413 "\n",
414 "def func(x):\n",
414 "def func(x):\n",
415 " return (x - 3) * (x - 5) * (x - 7) + 85\n",
415 " return (x - 3) * (x - 5) * (x - 7) + 85\n",
416 "\n",
416 "\n",
417 "\n",
417 "\n",
418 "a, b = 2, 9 # integral limits\n",
418 "a, b = 2, 9 # integral limits\n",
419 "x = np.linspace(0, 10)\n",
419 "x = np.linspace(0, 10)\n",
420 "y = func(x)\n",
420 "y = func(x)\n",
421 "\n",
421 "\n",
422 "fig, ax = plt.subplots()\n",
422 "fig, ax = plt.subplots()\n",
423 "plt.plot(x, y, 'r', linewidth=2)\n",
423 "plt.plot(x, y, 'r', linewidth=2)\n",
424 "plt.ylim(ymin=0)\n",
424 "plt.ylim(ymin=0)\n",
425 "\n",
425 "\n",
426 "# Make the shaded region\n",
426 "# Make the shaded region\n",
427 "ix = np.linspace(a, b)\n",
427 "ix = np.linspace(a, b)\n",
428 "iy = func(ix)\n",
428 "iy = func(ix)\n",
429 "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n",
429 "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n",
430 "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n",
430 "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n",
431 "ax.add_patch(poly)\n",
431 "ax.add_patch(poly)\n",
432 "\n",
432 "\n",
433 "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n",
433 "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n",
434 " horizontalalignment='center', fontsize=20)\n",
434 " horizontalalignment='center', fontsize=20)\n",
435 "\n",
435 "\n",
436 "plt.figtext(0.9, 0.05, '$x$')\n",
436 "plt.figtext(0.9, 0.05, '$x$')\n",
437 "plt.figtext(0.1, 0.9, '$y$')\n",
437 "plt.figtext(0.1, 0.9, '$y$')\n",
438 "\n",
438 "\n",
439 "ax.spines['right'].set_visible(False)\n",
439 "ax.spines['right'].set_visible(False)\n",
440 "ax.spines['top'].set_visible(False)\n",
440 "ax.spines['top'].set_visible(False)\n",
441 "ax.xaxis.set_ticks_position('bottom')\n",
441 "ax.xaxis.set_ticks_position('bottom')\n",
442 "\n",
442 "\n",
443 "ax.set_xticks((a, b))\n",
443 "ax.set_xticks((a, b))\n",
444 "ax.set_xticklabels(('$a$', '$b$'))\n",
444 "ax.set_xticklabels(('$a$', '$b$'))\n",
445 "ax.set_yticks([])\n",
445 "ax.set_yticks([])\n",
446 "\n",
446 "\n",
447 "plt.show()\n"
447 "plt.show()\n"
448 ],
448 ],
449 "language": "python",
449 "language": "python",
450 "metadata": {},
450 "metadata": {},
451 "outputs": [
451 "outputs": [
452 {
452 {
453 "metadata": {
453 "metadata": {
454 "png": {
454 "png": {
455 "height": 401,
455 "height": 401,
456 "width": 596
456 "width": 596
457 }
457 }
458 },
458 },
459 "output_type": "display_data",
459 "output_type": "display_data",
460 "png": "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\nu0ULZY4ebVMiAADy+/rrr4PbtWrVUmJioo1pAAAAIgclFSKC43//U2LfvpZZoHJlpc2eLcXE2BMK\nAIATeL1erVu3LrjfpEkTG9MAAABEFkoqhL+0NCX16CEjNTU4Mp1Opc+aJfMvf7ExGAAAVt9//708\nHk9wn5IKAACg8CipEN5MU4kPPyznli2WceaIEcq+7DKbQgEAULC8T/WTKKkAAACKgpIKYS32lVcU\ns3SpZea95RZ5+vWzKREAACe3evXq4LZhGDr//PNtTAMAABBZKKkQtlxffqn4Z56xzLIbN1b6xImS\nYdiUCgCAgvn9fq1duza4X7VqVVWoUMHGRAAAAJGFkgphyfjjDyX27i3D7w/OAmXKKH3OHImnJAEA\nwtDGjRuVnp4e3G/cuLGNaQAAACIPJRXCj8ejpLvvlmP/fss4Y+pUBerWtSkUAACn9u2331r2zzvv\nPJuSAAAARCZKKoSdhCeekOu77yyzzIED5evUyaZEAACc3po1ayz7jRo1sikJAABAZKKkQliJmTdP\nsbNmWWa+jh2VNXCgTYkAACic7074AQtXUgEAABQNJRXChnP9eiU89phl5q9dW+lTp0oO/q8KAAhf\nu3bt0p49e4L7LpdL5557ro2JwsfWrVt16aWXavv27SF7z0ceeUTDhw8P2fsBAIDiwb/8ERaMgweV\n2KOHDI8nODPj45U+d67McuVsTAYAwOmdeKtf7dq1FRMTY1Oa8LFmzRrdfPPNuv/++0Na2o0YMUKf\nf/65Bg4cKNM0S/S9AoGADh8+rB07duj777/Xp59+qszMzBJ9TwAAopXL7gCATFMJDz4o565dlnHG\nxInyn3++TaEAACi8aL/Vz+PxaMaMGVq4cKF+//13Va5cWddff70GDBigxJM8dffnn39W9+7d1bNn\nT3Xv3j2kecuUKaN58+apU6dO8ng8evHFF0vkfa677jr9+OOPCgQClvk333yjGjVqlMh7AgAQzbiS\nCraLef11xSxfbpll9e0rb5cuNiUCAKBoTnyyXzQtmp6amqquXbtq1KhR6tKli7799ls9+OCDmj17\n9knLp0OHDunuu+9WgwYNNGjQoBAnzlGtWjVNmDBBb775pl5//fUSeY9bbrlFvXv3tlwlZhhGibwX\nAAClASUVbOXYvl0JQ4daZtktWihzxAibEgEAUDQZGRnasmWLZRZNV1INGjRIa9euVfv27fXAAw9o\n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\nACFkA6eYdyQ3AAAAAElFTkSuQmCC\n",
460 "png": "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\nu0ULZY4ebVMiAADy+/rrr4PbtWrVUmJioo1pAAAAIgclFSKC43//U2LfvpZZoHJlpc2eLcXE2BMK\nAIATeL1erVu3LrjfpEkTG9MAAABEFkoqhL+0NCX16CEjNTU4Mp1Opc+aJfMvf7ExGAAAVt9//708\nHk9wn5IKAACg8CipEN5MU4kPPyznli2WceaIEcq+7DKbQgEAULC8T/WTKKkAAACKgpIKYS32lVcU\ns3SpZea95RZ5+vWzKREAACe3evXq4LZhGDr//PNtTAMAABBZKKkQtlxffqn4Z56xzLIbN1b6xImS\nYdiUCgCAgvn9fq1duza4X7VqVVWoUMHGRAAAAJGFkgphyfjjDyX27i3D7w/OAmXKKH3OHImnJAEA\nwtDGjRuVnp4e3G/cuLGNaQAAACIPJRXCj8ejpLvvlmP/fss4Y+pUBerWtSkUAACn9u2331r2zzvv\nPJuSAAAARCZKKoSdhCeekOu77yyzzIED5evUyaZEAACc3po1ayz7jRo1sikJAABAZKKkQliJmTdP\nsbNmWWa+jh2VNXCgTYkAACic7074AQtXUgEAABQNJRXChnP9eiU89phl5q9dW+lTp0oO/q8KAAhf\nu3bt0p49e4L7LpdL5557ro2JwsfWrVt16aWXavv27SF7z0ceeUTDhw8P2fsBAIDiwb/8ERaMgweV\n2KOHDI8nODPj45U+d67McuVsTAYAwOmdeKtf7dq1FRMTY1Oa8LFmzRrdfPPNuv/++0Na2o0YMUKf\nf/65Bg4cKNM0S/S9AoGADh8+rB07duj777/Xp59+qszMzBJ9TwAAopXL7gCATFMJDz4o565dlnHG\nxInyn3++TaEAACi8aL/Vz+PxaMaMGVq4cKF+//13Va5cWddff70GDBigxJM8dffnn39W9+7d1bNn\nT3Xv3j2kecuUKaN58+apU6dO8ng8evHFF0vkfa677jr9+OOPCgQClvk333yjGjVqlMh7AgAQzbiS\nCraLef11xSxfbpll9e0rb5cuNiUCAKBoTnyyXzQtmp6amqquXbtq1KhR6tKli7799ls9+OCDmj17\n9knLp0OHDunuu+9WgwYNNGjQoBAnzlGtWjVNmDBBb775pl5//fUSeY9bbrlFvXv3tlwlZhhGibwX\nAAClASUVbOXYvl0JQ4daZtktWihzxAibEgEAUDQZGRnasmWLZRZNV1INGjRIa9euVfv27fXAAw9o\n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\nACFkA6eYdyQ3AAAAAElFTkSuQmCC\n",
461 "text": [
461 "text": [
462 "<matplotlib.figure.Figure at 0x1078d7e10>"
462 "<matplotlib.figure.Figure at 0x1078d7e10>"
463 ]
463 ]
464 }
464 }
465 ],
465 ],
466 "prompt_number": 3
466 "prompt_number": 3
467 }
467 }
468 ],
468 ],
469 "metadata": {}
469 "metadata": {}
470 }
470 }
471 ]
471 ]
472 } No newline at end of file
472 }
General Comments 0
You need to be logged in to leave comments. Login now