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. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Matplotlib-checkins mailing list Matplotlib-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins