##// END OF EJS Templates
Final work on display system....
Brian Granger -
Show More
@@ -21,7 +21,7 b' Authors:'
21 21 # Main functions
22 22 #-----------------------------------------------------------------------------
23 23
24 def display(obj, include=None, exclude=None):
24 def display(*objs, **kwargs):
25 25 """Display a Python object in all frontends.
26 26
27 27 By default all representations will be computed and sent to the frontends.
@@ -29,8 +29,8 b' def display(obj, include=None, exclude=None):'
29 29
30 30 Parameters
31 31 ----------
32 obj : object
33 The Python object to display.
32 objs : tuple of objects
33 The Python objects to display.
34 34 include : list or tuple, optional
35 35 A list of format type strings (MIME types) to include in the
36 36 format data dict. If this is set *only* the format types included
@@ -40,79 +40,83 b' def display(obj, include=None, exclude=None):'
40 40 data dict. If this is set all format types will be computed,
41 41 except for those included in this argument.
42 42 """
43 include = kwargs.get('include')
44 exclude = kwargs.get('exclude')
45
43 46 from IPython.core.interactiveshell import InteractiveShell
44 47 inst = InteractiveShell.instance()
45 48 format = inst.display_formatter.format
46 49 publish = inst.display_pub.publish
47 50
48 format_dict = format(obj, include=include, exclude=exclude)
49 publish('IPython.core.display.display', format_dict)
51 for obj in objs:
52 format_dict = format(obj, include=include, exclude=exclude)
53 publish('IPython.core.display.display', format_dict)
50 54
51 55
52 def display_pretty(obj):
56 def display_pretty(*objs):
53 57 """Display the pretty (default) representation of an object.
54 58
55 59 Parameters
56 60 ----------
57 obj : object
58 The Python object to display.
61 objs : tuple of objects
62 The Python objects to display.
59 63 """
60 display(obj, include=['text/plain'])
64 display(*objs, include=['text/plain'])
61 65
62 66
63 def display_html(obj):
67 def display_html(*objs):
64 68 """Display the HTML representation of an object.
65 69
66 70 Parameters
67 71 ----------
68 obj : object
69 The Python object to display.
72 objs : tuple of objects
73 The Python objects to display.
70 74 """
71 display(obj, include=['text/plain','text/html'])
75 display(*objs, include=['text/plain','text/html'])
72 76
73 77
74 def display_svg(obj):
78 def display_svg(*objs):
75 79 """Display the SVG representation of an object.
76 80
77 81 Parameters
78 82 ----------
79 obj : object
80 The Python object to display.
83 objs : tuple of objects
84 The Python objects to display.
81 85 """
82 display(obj, include=['text/plain','image/svg+xml'])
86 display(*objs, include=['text/plain','image/svg+xml'])
83 87
84 88
85 def display_png(obj):
89 def display_png(*objs):
86 90 """Display the PNG representation of an object.
87 91
88 92 Parameters
89 93 ----------
90 obj : object
91 The Python object to display.
94 objs : tuple of objects
95 The Python objects to display.
92 96 """
93 display(obj, include=['text/plain','image/png'])
97 display(*objs, include=['text/plain','image/png'])
94 98
95 99
96 def display_latex(obj):
100 def display_latex(*objs):
97 101 """Display the LaTeX representation of an object.
98 102
99 103 Parameters
100 104 ----------
101 obj : object
102 The Python object to display.
105 objs : tuple of objects
106 The Python objects to display.
103 107 """
104 display(obj, include=['text/plain','text/latex'])
108 display(*objs, include=['text/plain','text/latex'])
105 109
106 110
107 def display_json(obj):
111 def display_json(*objs):
108 112 """Display the JSON representation of an object.
109 113
110 114 Parameters
111 115 ----------
112 obj : object
113 The Python object to display.
116 objs : tuple of objects
117 The Python objects to display.
114 118 """
115 display(obj, include=['text/plain','application/json'])
119 display(*objs, include=['text/plain','application/json'])
116 120
117 121
118 122
@@ -212,8 +212,7 b' class DisplayHook(Configurable):'
212 212 all return values of this should always include the "text/plain"
213 213 MIME type representation of the object.
214 214 """
215 format_dict = self.shell.display_formatter.format(result)
216 return format_dict
215 return self.shell.display_formatter.format(result)
217 216
218 217 def write_format_data(self, format_dict):
219 218 """Write the format data dict to the frontend.
@@ -179,10 +179,11 b' class BaseFormatter(Configurable):'
179 179 to find print method: :attr:`singleton_printers`, :attr:`type_printers`
180 180 and :attr:`deferred_printers`.
181 181
182 Users should use these dictionarie to register functions that will be used
183 to compute the format data for their objects (if those objects don't have
184 the special print methods). The easiest way of using these dictionaries
185 is through the :meth:`for_type` and :meth:`for_type_by_name` methods.
182 Users should use these dictionaries to register functions that will be
183 used to compute the format data for their objects (if those objects don't
184 have the special print methods). The easiest way of using these
185 dictionaries is through the :meth:`for_type` and :meth:`for_type_by_name`
186 methods.
186 187
187 188 If no function/callable is found to compute the format data, ``None`` is
188 189 returned and this format type is not used.
@@ -243,7 +244,7 b' class BaseFormatter(Configurable):'
243 244 def for_type(self, typ, func):
244 245 """Add a format function for a given type.
245 246
246 Parameteres
247 Parameters
247 248 -----------
248 249 typ : class
249 250 The class of the object that will be formatted using `func`.
@@ -441,6 +441,31 b' We have provided as magics ``%less`` to page files (aliased to ``%more``),'
441 441 most common commands you'd want to call in your subshell and that would cause
442 442 problems if invoked via ``!cmd``, but you need to be aware of this limitation.
443 443
444 Display
445 =======
446
447 The IPython console can now display objects in a variety of formats, including
448 HTML, PNG and SVG. This is accomplished using the display functions in
449 ``IPython.core.display``::
450
451 In [4]: from IPython.core.display import display, display_html
452
453 In [5]: from IPython.core.display import display_png, display_svg
454
455 Python objects can simply be passed to these functions and the appropriate
456 representations will be displayed in the console as long as the objects know
457 how to compute those representations. The easiest way of teaching objects how
458 to format themselves in various representations is to define special methods
459 such as: ``__html``, ``__svg__`` and ``__png__``. IPython's display formatters
460 can also be given custom formatter functions for various types::
461
462 In [6]: ip = get_ipython()
463
464 In [7]: html_formatter = ip.display_formatter.formatters['text/html']
465
466 In [8]: html_formatter.for_type(Foo, foo_to_html)
467
468 For further details, see ``IPython.core.formatters``.
444 469
445 470 Inline matplotlib graphics
446 471 ==========================
@@ -448,10 +473,14 b' Inline matplotlib graphics'
448 473 The IPython console is capable of displaying matplotlib figures inline, in SVG
449 474 format. If started with the ``--pylab inline`` flag, then all figures are
450 475 rendered inline automatically. If started with ``--pylab`` or ``--pylab <your
451 backend>``, then a GUI backend will be used, but the ``pastefig()`` function is
452 added to the global and ``plt`` namespaces. You can paste any figure that is
453 currently open in a window with this function; type ``pastefig?`` for
454 additional details."""
476 backend>``, then a GUI backend will be used, but IPython's ``display()`` and
477 ``getfigs()`` functions can be used to view plots inline::
478
479 In [9]: display(*getfigs()) # display all figures inline
480
481 In[10]: display(*getfigs(1,2)) # display figures 1 and 2 inline
482 """
483
455 484
456 485 quick_guide = """\
457 486 ? -> Introduction and overview of IPython's features.
@@ -36,6 +36,33 b" backends = {'tk': 'TkAgg',"
36 36 # Matplotlib utilities
37 37 #-----------------------------------------------------------------------------
38 38
39
40 def getfigs(*fig_nums):
41 """Get a list of matplotlib figures by figure numbers.
42
43 If no arguments are given, all available figures are returned. If the
44 argument list contains references to invalid figures, a warning is printed
45 but the function continues pasting further figures.
46
47 Parameters
48 ----------
49 figs : tuple
50 A tuple of ints giving the figure numbers of the figures to return.
51 """
52 from matplotlib._pylab_helpers import Gcf
53 if not fig_nums:
54 fig_managers = Gcf.get_all_fig_managers()
55 return [fm.canvas.figure for fm in fig_managers]
56 else:
57 figs = []
58 for num in fig_nums:
59 f = Gcf.figs.get(num)
60 if f is None:
61 print('Warning: figure %s not available.' % num)
62 figs.append(f.canvas.figure)
63 return figs
64
65
39 66 def figsize(sizex, sizey):
40 67 """Set the default figure size to be [sizex, sizey].
41 68
@@ -209,6 +236,8 b' def import_pylab(user_ns, backend, import_all=True, shell=None):'
209 236 shell.user_ns_hidden['display'] = display
210 237 user_ns['display_svg'] = display_svg
211 238 shell.user_ns_hidden['display_svg'] = display_svg
239 user_ns['getfigs'] = getfigs
240 shell.user_ns_hidden['getfigs'] = getfigs
212 241
213 242 if import_all:
214 243 s = ("from matplotlib.pylab import *\n"
General Comments 0
You need to be logged in to leave comments. Login now