|
From: <jd...@us...> - 2008-09-17 13:53:20
|
Revision: 6102
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6102&view=rev
Author: jdh2358
Date: 2008-09-17 20:53:16 +0000 (Wed, 17 Sep 2008)
Log Message:
-----------
committed Jae-Joons fancy box examples
Modified Paths:
--------------
trunk/matplotlib/examples/tests/backend_driver.py
Added Paths:
-----------
trunk/matplotlib/examples/pylab_examples/fancybox_demo.py
trunk/matplotlib/examples/pylab_examples/fancytextbox_demo.py
Added: trunk/matplotlib/examples/pylab_examples/fancybox_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/fancybox_demo.py (rev 0)
+++ trunk/matplotlib/examples/pylab_examples/fancybox_demo.py 2008-09-17 20:53:16 UTC (rev 6102)
@@ -0,0 +1,171 @@
+import matplotlib.pyplot as plt
+import matplotlib.transforms as mtransforms
+from matplotlib.patches import FancyBboxPatch
+
+
+# Bbox object around which the fancy box will be drawn.
+bb = mtransforms.Bbox([[0.3, 0.4], [0.7, 0.6]])
+
+def draw_bbox(ax, bb):
+ # boxstyle=square with pad=0, i.e. bbox itself.
+ p_bbox = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="square,pad=0.",
+ ec="k", fc="none", zorder=10.,
+ )
+ ax.add_patch(p_bbox)
+
+def test1(ax):
+
+ # a fancy box with round corners. pad=0.1
+ p_fancy = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="round,pad=0.1",
+ fc=(1., .8, 1.),
+ ec=(1., 0.5, 1.))
+
+
+ ax.add_patch(p_fancy)
+
+ ax.text(0.1, 0.8,
+ r' boxstyle="round,pad=0.1"',
+ size=10, transform=ax.transAxes)
+
+ # draws control points for the fancy box.
+ #l = p_fancy.get_path().vertices
+ #ax.plot(l[:,0], l[:,1], ".")
+
+ # draw the original bbox in black
+ draw_bbox(ax, bb)
+
+
+def test2(ax):
+
+ # bbox=round has two optional argument. pad and rounding_size.
+ # They can be set during the initiallization.
+ p_fancy = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="round,pad=0.1",
+ fc=(1., .8, 1.),
+ ec=(1., 0.5, 1.))
+
+
+ ax.add_patch(p_fancy)
+
+ # boxstyle and its argument can be later modified with
+ # set_boxstyle method. Note that the old attributes are simply
+ # forgotten even if the boxstyle name is same.
+
+ p_fancy.set_boxstyle("round,pad=0.1, rounding_size=0.2")
+ #or
+ #p_fancy.set_boxstyle("round", pad=0.1, rounding_size=0.2)
+
+ ax.text(0.1, 0.8,
+ ' boxstyle="round,pad=0.1\n rounding\\_size=0.2"',
+ size=10, transform=ax.transAxes)
+
+ # draws control points for the fancy box.
+ #l = p_fancy.get_path().vertices
+ #ax.plot(l[:,0], l[:,1], ".")
+
+ draw_bbox(ax, bb)
+
+
+
+def test3(ax):
+
+ # mutation_scale determine overall scale of the mutation,
+ # i.e. both pad and rounding_size is scaled according to this
+ # value.
+ p_fancy = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="round,pad=0.1",
+ mutation_scale=2.,
+ fc=(1., .8, 1.),
+ ec=(1., 0.5, 1.))
+
+
+ ax.add_patch(p_fancy)
+
+ ax.text(0.1, 0.8,
+ ' boxstyle="round,pad=0.1"\n mutation\\_scale=2',
+ size=10, transform=ax.transAxes)
+
+ # draws control points for the fancy box.
+ #l = p_fancy.get_path().vertices
+ #ax.plot(l[:,0], l[:,1], ".")
+
+ draw_bbox(ax, bb)
+
+
+
+def test4(ax):
+
+ # When the aspect ratio of the axes is not 1, the fancy box may
+ # not be what you expected (green)
+
+ p_fancy = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="round,pad=0.2",
+ fc="none",
+ ec=(0., .5, 0.), zorder=4)
+
+
+ ax.add_patch(p_fancy)
+
+
+ # You can compensate this by setting the mutation_aspect (pink).
+ p_fancy = FancyBboxPatch((bb.xmin, bb.ymin),
+ abs(bb.width), abs(bb.height),
+ boxstyle="round,pad=0.3",
+ mutation_aspect=.5,
+ fc=(1., 0.8, 1.),
+ ec=(1., 0.5, 1.))
+
+
+ ax.add_patch(p_fancy)
+
+ ax.text(0.1, 0.8,
+ ' boxstyle="round,pad=0.3"\n mutation\\_aspect=.5',
+ size=10, transform=ax.transAxes)
+
+ draw_bbox(ax, bb)
+
+
+
+def test_all():
+ plt.clf()
+
+ ax = plt.subplot(2, 2, 1)
+ test1(ax)
+ ax.set_xlim(0., 1.)
+ ax.set_ylim(0., 1.)
+ ax.set_title("test1")
+ ax.set_aspect(1.)
+
+
+ ax = plt.subplot(2, 2, 2)
+ ax.set_title("test2")
+ test2(ax)
+ ax.set_xlim(0., 1.)
+ ax.set_ylim(0., 1.)
+ ax.set_aspect(1.)
+
+ ax = plt.subplot(2, 2, 3)
+ ax.set_title("test3")
+ test3(ax)
+ ax.set_xlim(0., 1.)
+ ax.set_ylim(0., 1.)
+ ax.set_aspect(1)
+
+ ax = plt.subplot(2, 2, 4)
+ ax.set_title("test4")
+ test4(ax)
+ ax.set_xlim(-0.5, 1.5)
+ ax.set_ylim(0., 1.)
+ ax.set_aspect(2.)
+
+ plt.draw()
+ plt.show()
+
+test_all()
Added: trunk/matplotlib/examples/pylab_examples/fancytextbox_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/fancytextbox_demo.py (rev 0)
+++ trunk/matplotlib/examples/pylab_examples/fancytextbox_demo.py 2008-09-17 20:53:16 UTC (rev 6102)
@@ -0,0 +1,21 @@
+import matplotlib.pyplot as plt
+
+plt.text(0.6, 0.5, "test", size=50, rotation=30.,
+ ha="center", va="center",
+ bbox = dict(boxstyle="round",
+ ec=(1., 0.5, 0.5),
+ fc=(1., 0.8, 0.8),
+ )
+ )
+
+plt.text(0.5, 0.4, "test", size=50, rotation=-30.,
+ ha="right", va="top",
+ bbox = dict(boxstyle="square",
+ ec=(1., 0.5, 0.5),
+ fc=(1., 0.8, 0.8),
+ )
+ )
+
+
+plt.draw()
+plt.show()
Modified: trunk/matplotlib/examples/tests/backend_driver.py
===================================================================
--- trunk/matplotlib/examples/tests/backend_driver.py 2008-09-17 20:52:08 UTC (rev 6101)
+++ trunk/matplotlib/examples/tests/backend_driver.py 2008-09-17 20:53:16 UTC (rev 6102)
@@ -52,6 +52,8 @@
'date_demo2.py',
'equal_aspect_ratio.py',
'errorbar_limits.py',
+ 'fancybox_demo.py',
+ 'fancytextbox_demo.py',
'figimage_demo.py',
'figlegend_demo.py',
'figure_title.py',
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|