ufl team mailing list archive
-
ufl team
-
Mailing list archive
-
Message #02129
Re: [Branch ~ufl-core/ufl/main] Rev 1568: Add ipython svg output for cells interval, triangle and quadrilateral, just for show.
I think this wins the "most useless feature of fenics" award.
Martin
On 7 February 2013 15:08, <noreply@xxxxxxxxxxxxx> wrote:
> ------------------------------------------------------------
> revno: 1568
> committer: Martin Sandve Alnaes <martinal@xxxxxxxxx>
> branch nick: work
> timestamp: Thu 2013-02-07 15:07:17 +0100
> message:
> Add ipython svg output for cells interval, triangle and quadrilateral,
> just for show.
> added:
> sandbox/ipytest/
> sandbox/ipytest/graph.py
> modified:
> ufl/geometry.py
>
>
> --
> lp:ufl
> https://code.launchpad.net/~ufl-core/ufl/main
>
> Your team UFL Core Team is subscribed to branch lp:ufl.
> To unsubscribe from this branch go to
> https://code.launchpad.net/~ufl-core/ufl/main/+edit-subscription
>
> === added directory 'sandbox/ipytest'
> === added file 'sandbox/ipytest/graph.py'
> --- sandbox/ipytest/graph.py 1970-01-01 00:00:00 +0000
> +++ sandbox/ipytest/graph.py 2013-02-07 14:07:17 +0000
> @@ -0,0 +1,39 @@
> +
> +class A:
> + def _repr_png_(self):
> + import matplotlib.pyplot as plt
> + import networkx as nx
> + G = nx.Graph()
> + G.add_nodes_from([1, 2,3])
> + G.add_edges_from([(1,2),(1,3), (2,3)])
> +
> + fig = plt.figure()
> + nx.draw_spring(G)
> +
> + #fig, ax = plt.subplots()
> +
> + from IPython.core.pylabtools import print_figure
> + data = print_figure(fig, 'png')
> + # We MUST close the figure, otherwise IPython's display machinery
> + # will pick it up and send it as output, resulting in a double
> display
> + plt.close(fig)
> + return data
> +
> +if 0:
> + # Other way found on internet:
> + import networkx as nx
> + import matplotlib.pyplot as plt
> + import StringIO
> + from matplotlib.figure import Figure
> +
> + class MyGraph(nx.Graph):
> + def _repr_svg_(self):
> + plt.ioff() # turn off interactive mode
> + fig = plt.figure(figsize=(2,2))
> + ax = fig.add_subplot(111)
> + nx.draw_shell(self, ax=ax)
> + output = StringIO.StringIO()
> + fig.savefig(output,format='svg')
> + plt.ion() # turn on interactive mode
> + return output.getvalue()
> +
>
> === modified file 'ufl/geometry.py'
> --- ufl/geometry.py 2013-01-18 16:32:39 +0000
> +++ ufl/geometry.py 2013-02-07 14:07:17 +0000
> @@ -483,6 +483,19 @@
> def __repr__(self):
> return self._repr
>
> + def _repr_svg_(self):
> + n = self.cellname()
> + svg = '<svg xmlns="http://www.w3.org/2000/svg"
> version="1.1">\n<polyline points="%s"
> style="fill:none;stroke:black;stroke-width:3" />\n</svg>'
> + if n == "interval":
> + svg = svg % '0,0, 200,0'
> + elif n == "triangle":
> + svg = svg % '0,200 200,200 0,0 0,200'
> + elif n == "quadrilateral":
> + svg = svg % '0,200 200,200 200,0 0,0 0,200'
> + else:
> + svg = None
> + return svg
> +
> class ProductCell(Cell):
> """Representation of a cell formed by Cartesian products of other
> cells."""
> __slots__ = ("_cells",)
>
>
>
Follow ups