From: Rachel-Mikel_ArceJaeger@HMC.Edu - 2010-03-30 03:35:59
|
Hello, This is my first time trying out this list, so please forgive me if I've doing this wrong. I'm trying to create a plot that has its origin in the upper-left hand corner, rather than the lower-left hand corner. I've discovered that I get the same effect if I do: plt.plot( xcoords, ycoords, 'ro' ) plt.axis( [0, maxX, maxY, 0] ) However, the x-axis still appears on the bottom of the graph rather than the top. Is there a way that I can shift the location of the origin more easily, or at least shift where the axis is written at? Thanks! |
From: Ryan M. <rm...@gm...> - 2010-03-30 19:37:56
|
2010/3/29 Rachel-Mikel_ArceJaeger <Rac...@hm...>: > Hello, > > This is my first time trying out this list, so please forgive me if I've doing this wrong. > > I'm trying to create a plot that has its origin in the upper-left hand corner, rather than the lower-left hand corner. I've discovered that I get the same effect if I do: > > plt.plot( xcoords, ycoords, 'ro' ) > plt.axis( [0, maxX, maxY, 0] ) You're looking for the set_ticks_position method on the xaxis (I've also tweaked setting the limits): plt.plot(xcoords, ycoords, 'ro') plt.xlim(0, maxX) plt.ylim(maxY, 0) ax = plt.gca() # Get current axes object ax.xaxis.set_ticks_position('top') plt.show() Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Gökhan S. <gok...@gm...> - 2010-03-30 20:10:36
|
On Tue, Mar 30, 2010 at 2:37 PM, Ryan May <rm...@gm...> wrote: > You're looking for the set_ticks_position method on the xaxis (I've > also tweaked setting the limits): > > plt.plot(xcoords, ycoords, 'ro') > plt.xlim(0, maxX) > plt.ylim(maxY, 0) > ax = plt.gca() # Get current axes object > ax.xaxis.set_ticks_position('top') > plt.show() > > Ryan > > This is easier :) Could you get this one working ? ax.xaxis.set_ticks_position('both') It doesn't have an effect here on Qt4Agg using svn copy of matplotlib. -- Gökhan |
From: Ryan M. <rm...@gm...> - 2010-03-30 20:17:40
|
On Tue, Mar 30, 2010 at 2:10 PM, Gökhan Sever <gok...@gm...> wrote: > On Tue, Mar 30, 2010 at 2:37 PM, Ryan May <rm...@gm...> wrote: >> You're looking for the set_ticks_position method on the xaxis (I've >> also tweaked setting the limits): >> >> plt.plot(xcoords, ycoords, 'ro') >> plt.xlim(0, maxX) >> plt.ylim(maxY, 0) >> ax = plt.gca() # Get current axes object >> ax.xaxis.set_ticks_position('top') >> plt.show() > > This is easier :) > > Could you get this one working ? > > ax.xaxis.set_ticks_position('both') > > It doesn't have an effect here on Qt4Agg using svn copy of matplotlib. According to the docstring, it only puts ticks in both locations, not labels, which is what I'm seeing here on SVN with the PyGTK backend. Are you seeing something different? Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Rachel-Mikel A. J. <Rachel-Mikel_ArceJaeger@HMC.Edu> - 2010-03-30 21:52:01
|
Ryan's code works great - thanks! The only problem I have is that show() never terminates? If I force terminate it and close the figure, then all I ever have to do is call draw() and the figure reappears, but I have to call show() at least once, or else the figure will never appear. I don't want my program to create a figure until I absolutely have to, but I want to avoid non-termination and force-termination as well. Is there a way to do that? ~Rachel ----- Original Message ----- From: "Ryan May" <rm...@gm...> To: "Gökhan Sever" <gok...@gm...> Cc: "Rachel-Mikel_ArceJaeger" <Rac...@hm...>, "matplotlib-users" <mat...@li...> Sent: Tuesday, March 30, 2010 1:17:34 PM GMT -08:00 US/Canada Pacific Subject: Re: [Matplotlib-users] Shifting the Origin On Tue, Mar 30, 2010 at 2:10 PM, Gökhan Sever <gok...@gm...> wrote: > On Tue, Mar 30, 2010 at 2:37 PM, Ryan May <rm...@gm...> wrote: >> You're looking for the set_ticks_position method on the xaxis (I've >> also tweaked setting the limits): >> >> plt.plot(xcoords, ycoords, 'ro') >> plt.xlim(0, maxX) >> plt.ylim(maxY, 0) >> ax = plt.gca() # Get current axes object >> ax.xaxis.set_ticks_position('top') >> plt.show() > > This is easier :) > > Could you get this one working ? > > ax.xaxis.set_ticks_position('both') > > It doesn't have an effect here on Qt4Agg using svn copy of matplotlib. According to the docstring, it only puts ticks in both locations, not labels, which is what I'm seeing here on SVN with the PyGTK backend. Are you seeing something different? Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Ryan M. <rm...@gm...> - 2010-03-30 21:55:43
|
On Tue, Mar 30, 2010 at 3:51 PM, Rachel-Mikel Arce Jaeger <Rac...@hm...> wrote: > Ryan's code works great - thanks! > > The only problem I have is that show() never terminates? If I force terminate it and close the figure, then all I ever have to do is call draw() and the figure reappears, but I have to call show() at least once, or else the figure will never appear. I don't want my program to create a figure until I absolutely have to, but I want to avoid non-termination and force-termination as well. Is there a way to do that? You really should only call show() once (because it starts the event loops for the user interface), usually at the end of your script, which will bring up all of the figures. The script will then exit when you close all of the figures. If you're doing interactive work, you probably want to look into something like ipython (http://ipython.scipy.org/moin/) which makes working with plots interactively a breeze. Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Ryan M. <rm...@gm...> - 2010-03-31 01:19:49
|
(Putting back on list) On Tue, Mar 30, 2010 at 5:06 PM, Rachel-Mikel Arce Jaeger <Rac...@hm...> wrote: > I see. I think utilizing the backend will be sufficient for now. One more question (and thank you so much for your help!). Switching the xaxis to the top crushes it into the title, but adding more linespace to the title causes the title to go off the canvas. I really want to either resize the canvas or shift the figure down, but all I can find are functions for resizing the figure, which causes resolution issues. Are there any calls that let me shift to location of the figure on the canvas or else resize the canvas in relation to the figure? You're looking for the subplots_adjust() method of the figure class. You don't have to manually create a figure, as one is created for you when you start calling pyplot functions. But it's useful to be able to get to the object sometimes. # At the beginning, before any plotting fig = plt.figure() #OR at some point during/after plotting, before show() fig = plt.gcf() # Gives margins in normalized figure coordinates, so 0.0 represents very bottom, 1.0 represents very top. fig.subplots_adjust(top=0.85) Hope that helps, Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Gökhan S. <gok...@gm...> - 2010-03-30 21:59:29
|
On Tue, Mar 30, 2010 at 3:17 PM, Ryan May <rm...@gm...> wrote: > > According to the docstring, it only puts ticks in both locations, not > labels, which is what I'm seeing here on SVN with the PyGTK backend. > > Are you seeing something different? > > Yes, same here. It is just a bit unexpected ax.xaxis.set_ticks_position('top') puts labels as well but 'both' works only for ticks. It would be nice in some instances to have tick-labels appear on bottom and top with this easy way one-line way. -- Gökhan |
From: Gökhan S. <gok...@gm...> - 2010-03-30 19:36:45
|
On Mon, Mar 29, 2010 at 10:20 PM, <Rac...@hm...> wrote: > Hello, > > This is my first time trying out this list, so please forgive me if I've > doing this wrong. > > I'm trying to create a plot that has its origin in the upper-left hand > corner, rather than the lower-left hand corner. I've discovered that I get > the same effect if I do: > > plt.plot( xcoords, ycoords, 'ro' ) > plt.axis( [0, maxX, maxY, 0] ) > > However, the x-axis still appears on the bottom of the graph rather than > the top. > > Is there a way that I can shift the location of the origin more easily, or > at least shift where the axis is written at? > > Thanks! > Spines should do the trick. Take a look at: http://matplotlib.sourceforge.net/examples/pylab_examples/spine_placement_demo.html#pylab-examples-spine-placement-demo -- Gökhan |