Matplotlib Folks,
How do I turn off all clipping when making a plot? It seems
like everything has a set_clip_on argument, but I couldn’t figure out how
to set all of these to False without explicitly doing so in every plot call. I
would assume that there is a way to do this using an rcParam or the
matplotlibrc file?
Any help would be appreciated!
Thanks,
Sara
···
Sara Jean Hatch
Inner Planet Mission Analysis Group
Guidance, Navigation, & Control Section
NASA - Jet Propulsion Laboratory
4800 Oak Grove Drive
M/S: 301-150
Pasadena, CA 91109
Phone: (818) 354-8723
Hatch, Sara J wrote:
Matplotlib Folks,
How do I turn off all clipping when making a plot? It seems like everything has a set_clip_on argument, but I couldn’t figure out how to set all of these to False without explicitly doing so in every plot call. I would assume that there is a way to do this using an rcParam or the matplotlibrc file?
No there isn't, and I think this is the first time this question has come up. Usually some clipping is desired. I doubt the need for absolutely no clipping is common enough to justify an rcParam entry. If you think there is a common use case that should be supported, though, please elaborate.
Every artist has a set_clip_on() method, so to turn off all clipping you are stuck having to find all the artists and turn off clipping on each individually. Maybe something like this (untested):
def noclip(ax):
"Turn off all clipping in axes ax; call immediately before drawing"
ax.set_clip_on(False)
artists =
artists.extend(ax.collections)
artists.extend(ax.patches)
artists.extend(ax.lines)
artists.extend(ax.texts)
artists.extend(ax.artists)
for a in artists:
a.set_clip_on(False)
I suspect this will not necessarily take care of everything; there may be compound artists that do not define their own set_clip_on method to propagate down to the sub-artists.
Eric
Or even better::
for o in fig.findobj():
o.set_clip_on(False)
findobj is an artist method that recursive searches all the artists contained in it – you can optionally specify the type of artist you want returned. See
http://matplotlib.sourceforge.net/examples/pylab_examples/findobj_demo.html
JDH
···
On Thu, Mar 19, 2009 at 2:33 PM, Eric Firing <efiring@…83…202…> wrote:
def noclip(ax):
"Turn off all clipping in axes ax; call immediately before drawing"
ax.set_clip_on(False)
artists = []